Можно ли каким-то образом иметь возможность иметь параллельную сборку независимо от того, какой инструмент сборки используется?
В Unix мы можем добавить make -jN
где N - количество потоков, а в Windows я добавил CXX_FLAG "/MP"
который затем используется в Visual Studio для параллельной сборки... (?) Как я могу сделать мой версия такая, что CMAKE_MAKE_PROGRAM
не всегда расширяется при запуске CMake?
Что такое общее решение?
Я придумал это:
# Add some multithreaded build support
MARK_AS_ADVANCED(MULTITHREADED_BUILD)
set(MULTITHREADED_BUILD 12 CACHE STRING "How many threads are used to build the project")
if(MULTITHREADED_BUILD)
if(${CMAKE_GENERATOR} MATCHES "Unix Makefiles")
message(STATUS ${CMAKE_BUILD_TOOL})
set(CMAKE_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM} -j${MULTITHREADED_BUILD}")
message(STATUS "Added arguments to CMAKE_BUILD_TOOL: ${CMAKE_MAKE_PROGRAM}")
elseif(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
message(STATUS "Added parallel build arguments to CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
endif()
endif()