在并行make中首先执行没有依赖关系的假目标?

时间:2016-10-26 10:57:25

标签: makefile

在并行make中,target:dependency应该是1:1,这样执行的顺序将与没有-j的make相同。 我有一个假目标没有我想要在所有其他目标之前执行的依赖项:

 .PHONY: makeDirectories 
 makeDirectories:
   make -p /path-to-directory

此目标不需要任何依赖,但需要首先在并行make中执行。 我找到的解决方案如下:

-include makeDirectories

哪个有效。但这是确保首先执行PHONY目标makeDirectories的唯一方法。

1 个答案:

答案 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})