c – 如何动态包含makefile

现在我有两个makefile,A.mk和B.mk.

A.mk将包括B.mk
但B.mk是由一些在A.mk中执行的命令动态生成的

这是A.mk的伪代码

command to generate B.mk 
include B.mk
compile and link

问题是include命令类似于C文件中的#include宏. A.mk尝试在执行命令之前加载B.mk.

有人能给我一些建议吗?

非常感谢
杰瑞

最佳答案 可以让它像这样工作:

a.mk(此时,b.mk不存在)

-include b.mk

all:
    @echo foo : $(FOO)

b.mk:
    @echo "FOO=2" > b.mk

使用make -f a.mk,我们得到了这个:

foo : 2

如果b.mk不存在,则include指令前面的符号允许不生成警告.

正如评论中的MadScientist所述,您不需要将B.mk作为任何目标的先决条件.如果make看到它丢失并找到相应的目标,它将自动构建它.

点赞