Makefile 如何解开并行make-j编译器消息?

Makefile 如何解开并行make-j编译器消息?,makefile,cmake,stdout,stderr,build-system,Makefile,Cmake,Stdout,Stderr,Build System,当我使用make-j来并行编译命令时,(毫不奇怪)来自并发命令的任何编译器消息(警告/错误)都会交错。我想知道是否有办法解开这些信息 例如,使用make-j我可能会看到如下内容: Scanning dependencies of target test [ 33%] Building CXX object CMakeFiles/test.dir/C.cpp.o [ 33%] Building CXX object CMakeFiles/test.dir/B.cpp.o [ 50%] Buildi

当我使用
make-j
来并行编译命令时,(毫不奇怪)来自并发命令的任何编译器消息(警告/错误)都会交错。我想知道是否有办法解开这些信息

例如,使用
make-j
我可能会看到如下内容:

Scanning dependencies of target test
[ 33%] Building CXX object CMakeFiles/test.dir/C.cpp.o
[ 33%] Building CXX object CMakeFiles/test.dir/B.cpp.o
[ 50%] Building CXX object CMakeFiles/test.dir/A.cpp.o
[ 66%] Building CXX object CMakeFiles/test.dir/main.cpp.o
[ 83%] Building CXX object CMakeFiles/test.dir/D.cpp.o
/tmp/B.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
/tmp/C.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
1 warning generated.
/tmp/A.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
/tmp/D.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
[100%] Linking CXX executable test
[100%] Built target test
每个
.cpp
都会触发警告,但它们以任意顺序交错。相反,如果我发出
make
,则会得到所需的顺序输出:

make 
[ 16%] Building CXX object CMakeFiles/test.dir/A.cpp.o
/tmp/A.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
[ 33%] Building CXX object CMakeFiles/test.dir/B.cpp.o
/tmp/B.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
[ 50%] Building CXX object CMakeFiles/test.dir/C.cpp.o
/tmp/C.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
[ 66%] Building CXX object CMakeFiles/test.dir/D.cpp.o
/tmp/D.cpp:3:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
[ 83%] Building CXX object CMakeFiles/test.dir/main.cpp.o
[100%] Linking CXX executable test
[100%] Built target test
但很明显,我不能利用平行建筑

在并行构建期间,是否有任何方法可以从每个命令中收集警告/错误


(我不是超级喜欢
make
。如果
ninja
或其他支持cmake的命令行(非GUI IDE)构建系统可以做到这一点,我听说我会接受它们)。

你应该使用Mac OS X上的。

make
似乎没有这个选项。我需要安装一个新的/不同的版本吗?不,它没有这么说。它表示“无”是默认类型。如果您自己使用
-O
而不提供特定类型,则表示目标是默认值。
brew install make
,然后
gmake-j-Otarget
提供了我想要的。小问题:当我使用
-Otarget
时,颜色高亮显示将关闭。这是一个已知的问题吗?是否可以将其重新打开?@AlecJacobson尝试添加此GCC标志:
--diagnostics color=always
。请参阅我之前关于颜色的评论。我不确定在
cmake
gcc
中是否有任何等效选项,无论终端设置如何,都会强制启用颜色。