cmake如何让vs生成vs工程的debug和release版本配置
时间: 2024-09-22 13:02:21 浏览: 130
Tesseract4.0+VS2015+WIN10 C++ debug和release
CMake是一个跨平台的构建系统,用于自动化管理软件项目的构建过程。要在Visual Studio (VS) 中为项目生成Debug和Release版本,你需要在CMakeLists.txt文件中设置一些特定选项。以下是基本步骤:
1. **初始化CMake**: 首先,通过`cmake -S <源码目录> -B <构建目录>`命令告诉CMake你的源码根目录和构建目录。
2. **添加目标类型**: 添加`add_library()`或`add_executable()`来创建项目,并指定输出类型(`DEBUG` 或 `RELEASE`),例如:
```cmake
add_library(my_project_name ${PROJECT_NAME} ${SOURCES})
```
如果你想分别创建Debug和Release版本,可以这样做:
```cmake
add_library(debug_my_project_name Debug ${DEBUG_SOURCES})
add_library(release_my_project_name Release ${RELEASE_SOURCES})
```
3. **选择构建类型**: 使用`if`条件语句来根据构建类型设置不同的编译选项,如启用调试信息、优化级别等:
```cmake
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Od") # 开启调试信息
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2") # 关闭调试信息并开启优化
endif()
```
4. **VS生成支持**: 在CMakeLists.txt中,添加对Visual Studio的支持,通常使用`find_package(Visual Studio)`来查找VS版本,然后用`generate`命令生成VS解决方案文件:
```cmake
find_package(Visual Studio)
if(MSVC)
# 更改 Visual Studio 的生成文件列表...
endif()
cmake_policy(SET CMP0074 NEW)
cmake_minimum_required(VERSION 3.15)
# 创建VS项目
add_custom_command(TARGET debug_my_project_name ALL
COMMAND ${CMAKE_COMMAND}
-G "Visual Studio 16 2019"
-A Debug
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.sln
)
add_custom_command(TARGET release_my_project_name ALL
COMMAND ${CMAKE_COMMAND}
-G "Visual Studio 16 2019"
-A Release
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.sln
)
cmake_generate_target_properties(debug_my_project_name PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
cmake_generate_target_properties(release_my_project_name PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
```
5. **生成解决方案**:最后,在命令行运行`cmake --build . --config Debug` 或 `--config Release` 来实际构建Debug和Release版本。
阅读全文