如何编写CMakeLists.txt文件
时间: 2024-12-10 22:10:27 浏览: 10
编写CMakeLists.txt文件是使用CMake构建系统进行项目配置和构建的关键步骤。以下是一个基本的CMakeLists.txt文件的示例及其解释:
```cmake
# 设置CMake的最低版本要求
cmake_minimum_required(VERSION 3.10)
# 项目名称和版本
project(MyProject VERSION 1.0)
# 设置C++标准
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
# 添加可执行文件
add_executable(MyExecutable main.cpp)
# 添加库
add_library(MyLibrary library.cpp)
# 包含目录
include_directories(include)
# 链接库
target_link_libraries(MyExecutable PRIVATE MyLibrary)
# 设置源文件
set(SOURCES
src/main.cpp
src/other.cpp
)
# 添加自定义命令
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/generated.cpp
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_BINARY_DIR}/generated.cpp
DEPENDS ${CMAKE_BINARY_DIR}/generated.cpp
)
# 添加自定义目标
add_custom_target(generate DEPENDS ${CMAKE_BINARY_DIR}/generated.cpp)
# 安装规则
install(TARGETS MyExecutable DESTINATION bin)
install(TARGETS MyLibrary DESTINATION lib)
install(DIRECTORY include/ DESTINATION include)
```
解释:
1. `cmake_minimum_required(VERSION 3.10)`: 设置CMake的最低版本要求。
2. `project(MyProject VERSION 1.0)`: 定义项目名称和版本。
3. `set(CMAKE_CXX_STANDARD 11)`: 设置C++标准为C++11。
4. `add_executable(MyExecutable main.cpp)`: 添加一个可执行文件,指定源文件。
5. `add_library(MyLibrary library.cpp)`: 添加一个库,指定源文件。
6. `include_directories(include)`: 指定包含目录。
7. `target_link_libraries(MyExecutable PRIVATE MyLibrary)`: 链接库到可执行文件。
8. `set(SOURCES ...)`: 设置源文件列表。
9. `add_custom_command(...)`: 添加自定义命令。
10. `add_custom_target(generate DEPENDS ${CMAKE_BINARY_DIR}/generated.cpp)`: 添加自定义目标。
11. `install(...)`: 定义安装规则。
阅读全文