Совет, который может помочь пользователям CMake
Опция -jN не работает, когда вызовы make-файла выполняются рекурсивно, как обычно делают cmake-make-файлы.
Но есть средство, которое снова работает, потому что в сгенерированных make-файлах CMake вызывает такой синтаксис.
$(MAKE) -f CMakeFiles\Makefile2 <subproject>
Это означает, что вы можете изменить переменную MAKE:
mingw32-make "MAKE=mingw32-make -j3"
Теперь каждый раз, когда запускается подпроект-make, он снова получает опцию "-j3".
Но обратите внимание, что это эффективно не ограничивает количество параллельных компиляций до 3, как вы могли ожидать. Если у вас более 3 проектов, которые не зависят друг от друга в одной и той же иерархии, тогда все 3 проекта будут построены параллельно, и каждый из них запускает 3 шага компиляции. В результате 9 параллельных шагов компиляции.
Когда мы еще раз внимательно посмотрим на верхний Makefile, сгенерированный cmake, то увидим, что целевое «all», по сути, только запускает sub make.
$(MAKE) -f CMakeFiles\Makefile2 all
Таким образом, мы можем удалить один слой параллелизма подпроекта, вызвав
mingw32-make "MAKE=mingw32-make -j3" -f CMakeFiles\Makefile2 all
Но это приносит в жертву отчет о проделанной работе.
Надеюсь, это поможет.