【问题标题】:How to force certain groups of targets to run in parallel with GNU Make?如何强制某些目标组与 GNU Make 并行运行?
【发布时间】:2015-03-19 21:58:40
【问题描述】:

我已经阅读了几篇文章以确保如何强制目标 NOT 并行运行。但是假设我希望两个目标实际上同时启动并并行运行。这个可以吗?

例如,假设我的目标如下:

    myParallelTarget:
         $(MAKE) target1;
         $(MAKE) target2;

然后我用例如:

   make -j16 myParallelTarget

我有一个比这个更复杂的项目,但这是一般形式。即使我用 -j16 调用我的 Makefile,它仍然会在恢复到 target2 之前构建 target1。

当我查看构建输出时,我感觉如果立即启动 target2,构建可能会执行得更快,即似乎有些线程正在等待 target1 完成。是否可以同时强制启动目标?

【问题讨论】:

    标签: makefile gnu-parallel


    【解决方案1】:

    make parallelism 将作为先决条件找到的目标并行化。它不会并行化目标配方中的行。这些总是按顺序一次执行一个。

    如果你想并行化这两个 make 命令,那么你需要使用类似的东西

    myParallelTarget: target1 target2
    

    但是,如果在使用 -j 参数运行 make 时遇到 myParallelTarget(无论是在命令行上还是作为另一个目标的先决条件),这些将并行运行。

    相反,防止目标并行运行意味着手动运行它们或通过先决条件链显式地对它们进行排序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      相关资源
      最近更新 更多