make:仅在单个目标的子目录中禁用并行构建

时间:2013-06-18 15:02:19

标签: build makefile autotools

我有一个相当庞大的autotools驱动的项目,它位于一个目录树中,该目录树由许多带有子目录的目录组成。它有一个目标check(在每个子目录以及主目录中)执行大量自动化测试。 check目标是递归构建的。

并行构建和测试(通过-j选项制作)适用于大多数目录。但是,有一个目录包含并行执行的测试(定时灵敏度),但在串行运行时会通过。

问题是:有没有办法强制make在这一个子目录中串行构建check目标,同时并行构建其他所有目标?

2 个答案:

答案 0 :(得分:14)

添加到您的Makefile

.NOTPARALLEL:

请参阅GNU make here的文档。

答案 1 :(得分:3)

如果我理解正确,那么当你运行构建check目标的递归make时,你可以专门传递-j1,以确保它以串行方式运行:

check: ; $(MAKE) -j1 ...