【发布时间】:2014-09-26 18:07:31
【问题描述】:
在构建具有递归依赖关系的库时,我有这个片段:
$(LIBRARY) : $(OBJECTS) | $(LIBDIR) # objects is all the obj/*.o
$(AR) ...
obj/%.o : %.cpp obj/%.d
$(CC) ...
build : $(DEPENDENCIES) $(LIBRARY)
$(DEPENDENCIES):
$(MAKE) -C $(ROOT)/$@
如果我运行make,这将有效。一切都以正确的顺序按预期构建。但是如果我运行make -jN,库的构建顺序会很糟糕,因为我实际上没有设置任何依赖项排序规则,这会导致大量未定义的引用。
如果我添加规则:
$(OBJECTS) : $(DEPENDENCIES)
然后每次运行 make 都会重建每个库,无论更改如何(DEPENDENCIES 是假的,但我不明白为什么它实际上会重建所有内容)。为了并行构建的目的,我怎样才能强制执行正确的顺序,而不必每次都重新构建所有内容?
【问题讨论】:
-
@MichaelGrünewald 是的!谢谢你,你是我的英雄。