GNU make:未执行嵌套变量的规则先决条件

时间:2015-11-30 09:56:03

标签: makefile gnu-make

关键是我希望将一些依赖关系集中在一个变量中,但依赖关系本身包含在变量中。

    a=meow
    b=squeek

    $(a):
        touch $@
    $(b):
        touch $@

    targs=$(a) $(b)

    all: $(targs)

在实际案例中,a和b的规则不同,所以我需要将它们放在不同的目标中。

当我尝试构建这样的目标时,只执行最后一次嵌套依赖:

    $ make
    touch meow

    $ ls
    . .. Makefile meow

有人可以解释一下我如何解决问题或我错在哪里? 我可以制作一个像targ这样的虚假目标:$(a)$(b),但如果有办法保持我提到的结构,我想知道它。

提前致谢!

UPD:已解决。我的错误:我没有运行make all而是运行了make并执行了第一个目标,而不是all

1 个答案:

答案 0 :(得分:0)

Make的默认设置是使用Makefile中的第一个目标。将 all 目标移动到开头或在Makefile中的某处使用以下行

.DEFAULT_GOAL := all