如何在规则之外使用makefile变量

时间:2016-11-17 22:35:04

标签: makefile gnu-make

现在我正在学习如何使用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'.

我已经尝试阅读手册和谷歌搜索,但我无法弄清楚这一点。我也想象有一些我想念的简单答案。非常感谢你的帮助! :)

1 个答案:

答案 0 :(得分:2)

如果您可以控制RequestOptions创建的文件的内容,这很容易:只需将该文件的格式设为make变量赋值,然后使用target1命令,如下所示:

include

通过automatically generated makefiles make的魔力将重新创建该目标文件,然后自动重新调用。