Как сделать параллельные сборки CMake ExternalProject
При сборке проекта CMake (например, в Windows) я могу выполнить параллельную сборку, выполнив следующую команду:
cmake --build . -- /m
Ключ / m передается в msbuild, и я получаю параллельные сборки. Однако, если у меня есть какой-то внешний проект в моих CMakeLists, этот переключатель не передается в его команду сборки.
Каков наилучший способ убедиться, что мой ExternalProject построен параллельно? Я не хочу жестко кодировать BUILD_COMMAND, если я могу избежать этого.
2 ответа
В CMake 3.12 была добавлена поддержка для запуска параллельных заданий из cmake.
Предыдущие версии поддерживали это только через сквозные аргументы после -, которые, понятно, не будут проходить через внешние сборки. Хотя я не уверен, что новая поддержка работает для ExternalProject, было бы здорово попытаться сообщить, работает ли она!
У меня была такая же проблема с make based external_projects. Я закончил с решением пройти -j8
флаг через кэшированную переменную cmake.
set(EXTERNAL_BUILD_ARGS "/m" CACHE STRING "flags for external project builds")