现在我正在学习如何使用makefile并且在规则中遇到变量问题。我的目标是解析包含其他文件名称的文件,将其保存在变量中,并将该变量用作"目标模式"在每个文件上运行规则。这是我的问题的一个简单示例(我正在编写文件名以使其更简单)。
当我运行时:
object P inited
我得到以下内容,这就是我想要的内容:
variable = file1.txt file2.txt file3.txt
run : $(variable)
$(variable): %.txt:
echo File is $@
问题是我想通过解析文件来定义$ make run
echo File is file1.txt
File is file1.txt
echo File is file2.txt
File is file2.txt
echo File is file3.txt
File is file3.txt
,我希望该文件是一个依赖项,因为如果它不存在,我将使用makefile中的另一个规则。因此,当我在这样的规则中定义变量时(我知道它来自我的回声):
variable
我得到以下内容:
target1 :
$(eval variable = file1.txt file2.txt file3.txt)
echo $(variable)
run : $(variable)
$(variable): %.txt:
echo File is $@
而且:
$ make target1
echo file1.txt file2.txt file3.txt
file1.txt file2.txt file3.txt
所以我的问题是如何在规则中定义变量并在以下内容中使用它:
$ make run
make: Nothing to be done for `run'.
我已经尝试阅读手册和谷歌搜索,但我无法弄清楚这一点。我也想象有一些我想念的简单答案。非常感谢你的帮助! :)
答案 0 :(得分:2)
如果您可以控制RequestOptions
创建的文件的内容,这很容易:只需将该文件的格式设为make变量赋值,然后使用target1
命令,如下所示:
include
通过automatically generated makefiles make的魔力将重新创建该目标文件,然后自动重新调用。