3
我有一个GNU Makefile文件,看起来有点像这样:有条件追加到一个Makefile中的变量目标
LIST = item1
.PHONY: targetMain targetA targetB preA preB
targetMain:
# DO all the work in here
echo $(LIST)
targetA: preA targetMain
targetB: preB targetMain
preA:
LIST += itemA
preB:
LIST += itemB
的想法是,我要么运行make targetA或使targetB。他们两人都做了非常类似的事情,但有不同的项目列表。问题在于变量没有被有条件地附加到,它总是被附加到,意味着我的输出始终是“item1 itemA itemB”。
如何有条件地追加到变量?
有点解释:这叫做目标特定变量。它的工作方式是现在有两个* LIST变量:一个用于targetA,另一个用于targetB。 'target:VARIABLE = value'语法是如何分配特定于目标的变量。这两个'LIST'变量中的哪一个被展开取决于你所在的目标命令脚本。注意,由于这个原因,目标特定的变量只能从命令脚本中被引用(它们不能被引用prerequesites线,甚至)。 – 2010-01-27 18:18:35
太棒了,这似乎是做我想要的! – bramp 2010-01-27 18:19:46
谢谢,丹,我应该补充一些解释。 :-) – Neil 2010-01-27 18:59:05