我的情况是我正在构建这样的东西:
target1: dep1 list2
dep1:
perl script that generates a .h file
list2:
compiles a list of c files
including one that needs the .h file from dep1 to exist
我使用并行构建选项(target1
)构建-J 6
,我试图理解clearmake
Makefile语法,它会说“完成dep1
然后全部list2
并行编译“
每当我构建时,它都无法编译list2
中的项目,因为尚未从dep1
生成头文件生成,因为它们都是并行发生的(dep1
需要20秒)
你会如何避免这种情况?
答案 0 :(得分:0)
在clearmake中引入顺序构建步骤的一种方法是将该构建分成两部分,有点像“Coordinating reference times of several builds”部分所述:
另一种方法是在同一
clearaudit
个会话中运行所有构建 例如,您可以编写一个shell脚本multi_make
,其中包含多个clearmake
或clearaudit
的调用(以及其他命令)。
如下运行脚本可确保所有构建都是共享相同引用时间的子会话:
clearaudit -c multi_make
虽然clearaudit部分可能与您的案例无关,但主要想法仍然存在:通过多个顺序clearmake
步骤来试验构建过程,而不是尝试在Makefile(clearmake Makefiles and BOS Files中提到的.NOTPARALLEL:
指令)。