【发布时间】:2012-05-28 03:33:28
【问题描述】:
无论使用哪种构建工具,是否有可能进行并行构建?
在 Unix 下我们可以添加 make -jN 其中 N 是线程数,在 Windows 下我添加到 CXX_FLAG "/MP" 然后在 Visual Studio 中用于并行构建...(?)我怎样才能让我的当我运行 CMake 时,CMAKE_MAKE_PROGRAM 并不总是扩展的版本?
什么是通用解决方案?
我想出了这个:
# 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()
【问题讨论】:
-
不确定能不能做到,反正也不是什么好主意。 CMake 描述了项目是如何构建的,make 是如何做的,这与 CMake 不同。
-
扩展您的方法只需在 cmake 的命令行中添加
-DMULTITHREADED_BUILD=12。并删除SET(MULTITHREADED_BUILD ...) -
在我的情况下,Eclipse CDT 导致错误:“/usr/bin/make -j8”全部无法运行程序“/usr/bin/make -j8”:未知原因错误:程序“/在 PATH 中找不到 usr/bin/make -j8"
-
我的 CMake / Eclipse CDT 错误是由于 CMAKE_MAKE_PROGRAM 错误:cmake.org/Bug/view.php?id=15497
-
由于这个帖子有点老了,CMake >= 3.12.0 的用户应该考虑@usr1234567 的回答
标签: cmake parallel-builds