现在我有两个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看到它丢失并找到相应的目标,它将自动构建它.