同时运行几个'make'命令?

问题描述 投票:-1回答:1

((make noob here)

我做了以下事情:

  1. 使用CMake配置了C ++项目。
  2. 在一个终端选项卡中,运行make以开始构建整个项目。
  3. [厌倦了等待整个过程的完成,以为我可以只是make我正在处理的子文件夹。
  4. 没有停止正在进行的构建,在第一个选项卡中,打开第二个选项卡,并从所述子文件夹中运行make

一会儿看起来很正常,然后突然第二个选项卡开始显示与整个项目有关的构建输出,而不仅仅是子文件夹。我发现自己尝试的操作没有按预期工作,所以我用CTRL-C键选择了第二个选项卡。

那是最奇怪的时刻:在第一个选项卡中,构建输出中混入了我要构建的特定文件夹中的行。而且构建方式已超过100%,最高达到128%!

我的问题是:同时启动多次时,'make'到底能做什么?

我是否正确地认为多个make命令在同一过程中以某种方式“合并”?

makefile cmake
1个回答
1
投票

这更多是关于CMake创建的makefile及其工作方式的问题。这些makefile会执行诸如跟踪完成百分比之类的事情,而不是make本身。通过在同一目录中开始第二次构建很有可能使您弄乱了CMake makefile用来跟踪进度的任何功能。

简短的答案是,不,一个make的调用不可能以某种方式“接管”或合并另一个make的调用。就make程序而言,他们彼此之间一无所知。但是,由于两者都在同一文件系统上运行,因此如果一个制造商以一种可能使另一制造商混淆的方式写入文件,则可能会看到奇怪的行为。

由cmake生成的makefile是[[非常复杂;我从未真正尝试完全了解它们的工作原理。我一直觉得很遗憾,除了GNU Makefile生成器之外,没有人尝试实现CMake Unix Makefiles生成器,该生成器充分利用了GNU make功能。我敢肯定结果会更容易阅读并且可能更快。但是这似乎不可能发生。更加关注速度而不是便携性的CMake用户可能只是切换为使用Ninja作为生成器。

© www.soinside.com 2019 - 2024. All rights reserved.