【发布时间】:2018-04-11 17:11:07
【问题描述】:
我有一个依赖于变量的 make 目标,该变量包含 PHONY 和真实目标。
这个目标只需要依赖于变量中的真实目标。
如何测试变量以确定它是否是 PHONY,以便过滤掉它们?
(我可以测试配方中是否存在文件,但我不希望我的目标因执行任何 PHONY 目标而被触发。)
谢谢!
【问题讨论】:
-
target: $(filter-out $(list_of_phony_targets),$(variable_with_targets)) -
每个虚假目标都出现在以
.PHONY:开头的行中,而不是将它们从变量中过滤掉,我建议您使用一个从不包含它们开始的变量。 -
感谢您的建议,但我无法控制变量。我从另一个我无法控制的 Make 上下文中接收它。另外,我没有虚假目标列表。如果我这样做了,那就容易了。我想避免使用 grepping 或解析 Makefile 来查找 PHONY 目标。使解析器成为棘手的事情。 ;) 我希望 Make 提供一个 PHONY 目标列表或提供一些测试/功能来区分 PHONY 和真实目标。