我一直在学习制作,并且正在努力解决问题.我对这种一般结构有一些规则.
FILE = "myfile.txt"
test :
YOUR = $(subst my,your,$(FILE));\
cat $(FILE) $(YOUR)
我希望最终结果是运行命令:
cat myfile.txt yourfile.txt
相反,我得到以下……
YOUR = "yourfile.txt";\
cat "myfile.txt"
/bin/sh: YOUR: command not found
make: *** [test] Error 1
如果不是使用subst函数,我只是在makefile中执行YOUR =“yourfile”,一切看起来都很好.任何建议或我错过了一些非常基本的东西?我应该补充一点,我使用制表符而不是空格来为规则中的命令启动行.
最佳答案
FILE = "myfile.txt"
test :
$(eval YOUR = $(subst my,your,$(FILE)))
cp $(FILE) $(YOUR)
您必须使用配方中的eval功能(Define make variable at rule execution time)