Как распутать параллельные сообщения компилятора make -j? - PullRequest
1 голос
/ 10 ноября 2019

Когда я использую 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)могу сделать это, я слышу, чтобы принять их).

1 Ответ

2 голосов
/ 10 ноября 2019

Вы должны использовать параметр синхронизации вывода .

...