我正在尝试编写一个GNU make Makefile,其中有许多类似的目标,其构建命令在它们之间略有不同。 我正在尝试使用目标特定变量来表示这些差异。 其中一些变量值引用了我想要用作先决条件的文件。 例如:
target_1:special_filename=target1_prereq
target_2:special_filename=target2_prereq
target_1 target_2: common_filename $(special_filename)
do_something common_filename --a-weird-option=$(special_filename)
当我调用“make target_1”时,如果target1_prereq不存在,我希望它制作target1_prereq。目前看来,尽管使用了正确的参数调用构建命令(do_something),但似乎没有将target1_prereq用作先决条件。我正在使用GNU Make 3.80。
编辑: 来自真实系统的几个更复杂的情况。其中一些变量本身基于其他变量的值。手动指定先决条件不会扩展。一个稍微复杂一点的例子:
target_1:special_filename_base=target1_prereq
target_2:special_filename_base=target2_prereq
some_filename_a = $(special_filename_base).exta
some_filename_b = $(special_filename_base).extb
target_1 target_2: common_filename $(special_filename_b) $(special_filename_a)
do_something common_filename --a-weird-option=$(special_filename_a) --second=$(special_filename_b)
目标_1 目标_2:common_filename $$(special_filename_base).exta $$(special_filename_base).extb ...
- Beta