并行输出

luc*_*nte 3 build-process makefile cmake

当运行带有多个进程(make -jN)的CMake生成的Makefile时,输出通常会像这样搞乱:

[  8%] [  8%] [  9%] Building CXX object App/CMakeFiles/App.dir/src/File1.cpp.o
Building CXX object App/CMakeFiles/App.dir/src/File2.cpp.o
Building CXX object App/CMakeFiles/App.dir/src/File3.cpp.o
Run Code Online (Sandbox Code Playgroud)

我不确定,但我认为这种行为也适用于不是由CMake生成的Makefile.我会说当多个进程同时写入stdout时会发生这种情况.

我知道我可能很迂腐,但有没有(简单)解决这个问题?;)

Eri*_*ski 9

如果你正在使用GNU make,你可以通过重新定义SHELL命令由一个简单的实用程序包装来确保打印到标准输出的信息的原子性. 这是一个更详细的描述,包括包装器实用程序的示例源.


Jes*_*erE 5

我试图让CMake的人解决这个问题,但显然他们不想这样做.见http://www.cmake.org/Bug/view.php?id=7062.