在并行make中,target:dependency应该是1:1,这样执行的顺序将与没有-j的make相同。 我有一个假目标没有我想要在所有其他目标之前执行的依赖项:
.PHONY: makeDirectories
makeDirectories:
make -p /path-to-directory
此目标不需要任何依赖,但需要首先在并行make中执行。 我找到的解决方案如下:
-include makeDirectories
哪个有效。但这是确保首先执行PHONY目标makeDirectories
的唯一方法。
答案 0 :(得分:1)
另一种方法是让所有目标都依赖于其目录。 E.g:
.SECONDEXPANSION:
%.o : %.cc | $$(dir $$@) # <---- order-only dependency on the directory
% : # must be the last pattern rule
mkdir -p $@
另一种方法是使用$(shell ...)
函数创建目录:
objdir := release
$(shell mkdir -p ${objdir})