我有一个包含许多cpp文件(大约400多个)的cmake项目,并且使用/ MP(多线程)编译器选项可以在具有多个内核的CPU上显着加快编译速度。
问题是,每次使用CMake重新生成解决方案文件时,该选项都被禁用,导致编译速度非常慢。我可以通过在Visual Studio中手动更改每个项目的选项(解决方案包含许多不同的项目)来解决这个问题。但是,每次我通过运行CMake重新生成解决方案文件(例如,当我git拉出其他人添加/删除某些文件的更改时),此更改将被覆盖。
如何使其持久化以便CMake始终在VS项目中启用多线程编译?
答案 0 :(得分:4)
将以下add_compile_options()
放在项目主CMakeLists.txt
文件的顶部:
cmake_minimum_required(VERSION 2.8.12)
add_compile_options($<$<CXX_COMPILER_ID:MSVC>:/MP>)
或使用较旧的CMake版本&lt; 2.8.12:
project(...)
if (MSVC)
add_definitions("/MP")
endif()
如果您无法或不想更改主CMakeLists.txt
文件,您可以随时手动将标记添加到CMAKE_CXX_FLAGS
缓存变量,例如使用CMake's GUI(假设您的CMake项目本身没有强制CMAKE_CXX_FLAGS
的值)。
<强>参考强>