Как запустить makefile параллельно после использования add_custom_target в cmake? - PullRequest
0 голосов
/ 14 января 2019

Я следую этому руководству, чтобы построить мой проект в режиме выпуска и отладки. Все работает с файлом, кроме случаев, когда я пытаюсь запустить makefile параллельно, используя make debug -j4. предупреждение Я получаю make[4]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule.

ADD_CUSTOM_TARGET(debug
  COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
  COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
  COMMENT "Switch CMAKE_BUILD_TYPE to Debug"
  )

ADD_CUSTOM_TARGET(release
  COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_SOURCE_DIR}
  COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target all
  COMMENT "Switch CMAKE_BUILD_TYPE to Release"
  )

Я надеялся, что make debug -j4 or make release -j4 сработает. Но, видимо, это не так.

1 Ответ

0 голосов
/ 14 января 2019

Цель debug - это одиночная цель, которая выполняет одно задание, которое вызывает cmake для воссоздания Make-файлов и затем cmake invoke make. -j4 используется для запуска 4 заданий одновременно. Но не четыре работы, а только одна. Предупреждающее сообщение от make обнаруживает, что дочерний процесс больше не make и не может интерпретировать параметр -j.

Вам необходимо обновить правила для корректной работы.

COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} -j 4 --target all

Это будет иметь cmake pass make опцию -j 4 при сборке после обновления всех Make-файлов. См. Build Tool Mode в руководстве cmake.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...