我有一个“原始”文件,如果已更新,我想将其复制,修改并分发到驱动器上的几个位置。修改是通过一个小bash脚本进行的,该脚本带有一个参数,该参数对于每个生成的远程文件都是唯一的。]
在我的Makefile中,我可以使用每个参数的单独规则/食谱来做到这一点,就像这样:
parameters = AWK BAT CAT DOG $(DEST_FILE_AWK) : $(ORIGINAL) ./copyAndModify "AWK" ## Creates $(ORIGINAL)_AWK, substed copy of ORIGINAL mv - f $(ORIGINAL)_AWK $(DEST_FILE_AWK) $(DEST_FILE_BAT) : $(ORIGINAL) ./copyAndModify "BAT" ## Creates $(ORIGINAL)_BAT, substed copy of ORIGINAL mv - f $(ORIGINAL)_BAT $(DEST_FILE_BAT)
DEST_FILE_AWK
和DEST_FILE_BAT
的取消引用的值彼此无关,但是除此之外,以上两个配方完全相同,唯一的区别在于参数,因此我不禁要将它们合并为具有多个目标规则行的一个超级规则/食谱。
但是我只是做不到。我已经在规则的目标部分尝试了各种foreach()
和其他内容,但是问题是,无论如何,我都无法将参数的值放入recipe
有办法吗?
我有一个“原始”文件,如果已更新,我想将其复制,修改并分发到驱动器上的几个位置。修改是通过一个带有一个参数的小bash脚本进行的,一个参数是...
使用此处提供的信息,您可以做的最好(假设您使用的是GNU make)是评估/呼叫组合。正如anishsane所建议的,根据DEST_FILE_ *变量的值,可能可以做一些简单的事情。
但是这应该起作用:
至少在gnu make中可以不用$(eval)
来完成:)