【发布时间】:2012-12-13 01:29:21
【问题描述】:
生成文件
abc:
TEST=$@ /* TEST=abc */
def:
TEST=$@ /* TEST=def */
xxx:
@echo $(TEST)
如果我运行make abc xxx,我
期望输出abc。
如果我运行make def xxx,我
期望输出def。
但它不是那样工作的。似乎make 不允许我在目标中定义变量。我的问题是如何定义取决于构建目标的变量及其值?
【问题讨论】:
-
正如所写,两个
TEST宏分配在文件被读取时被处理,第二个'wins'。请注意,宏包含 C 注释;当我运行make abc xxx时,输出以xxx 开头,包括我的根目录中的所有名称TEST=def和*/。在构建abc时,没有要执行的命令。同上def。构建xxx时,$@的值为xxx。您不能轻易地使xxx输出一个值,该值取决于在同一运行make之前构建的其他内容。 -
@WaleedKhan:建议的重复问题似乎与此问题非常不同(如果我了解此问题)。
-
谢谢乔纳森,很抱歉我忘了提到删除 c cmets。你说的对。但是如何使定义变量取决于目标?我希望在构建目标时处理 TEST,而不是读取文件。