使用 GNU make,是否可以在使用“--jobs”选项时创建一组永远不会同时安排的目标?
背景:
为了使这更具体一点,请考虑以下形式的生成文件
p1: ...deps... # no parallelization conflicts (can run at the same time as p*, e*)
...rules...
p2: ...deps... # no parallelization conflicts (can run at the same time as p*, e*)
...rules...
p3: ...deps... # no parallelization conflicts (can run at the same time as p*, e*)
...rules...
e1: ...deps... # cannot run at same time as any other e*
...rules...
e2: ...deps... # cannot run at same time as any other e*
...rules...
e3: ...deps... # cannot run at same time as any other e*
...rules...
我需要做的主要事情是确保 e1、e2 和 e3 永远不会同时被处理,因为它们在资源有限的嵌入式设备上做一些工作。如果其中多个同时执行,它们会崩溃。p1、p2 和 p3 可以与任何东西并行执行,包括任何 e* 作业。
请注意,实际的 makefile 有几千个目标,其依赖关系树大约有 10 级深,所以我希望有一种方法可以做到这一点,(a)不需要连续运行 make 并且(b)保留的好处在生成文件中编码依赖树。