目录
CMake 是一个跨平台的自动化构建系统,用于管理软件构建过程,使用 CMake 可以轻松地生成 Makefile 或 Visual Studio 项目文件。CMake 采用“描述”而非“命令”的方式来编写构建文件,这使得它非常适合复杂的构建过程。下面详细介绍 CMake 的基本概念和使用方法。
基本概念
CMakeLists.txt 文件
CMake 的配置文件称为 CMakeLists.txt
,它是 CMake 用来构建项目的主入口文件。在这个文件中,你将定义项目的配置信息、源文件列表、依赖关系等。
命令(Command)
CMake 使用一系列命令来描述构建过程。常见的命令包括 add_executable
、add_library
、target_link_libraries
等。
变量(Variable)
变量用于存储配置信息和其他数据。变量名称通常以大写字母开头。
缓存(Cache)
缓存用于存储一些持久化的配置选项,如路径、版本号等。缓存变量通常通过 -D
参数传递给 CMake。
基本用法
1. 设置项目基本信息
首先需要在 CMakeLists.txt
中设置项目的名称和版本号。
cmake
深色版本
1cmake_minimum_required(VERSION 3.10) # 指定所需的 CMake 最低版本
2project(MyProject VERSION 1.0 LANGUAGES CXX) # 设置项目名称和版本号
2. 添加可执行文件
使用 add_executable
命令来指定可执行文件的源文件列表。
cmake
深色版本
1add_executable(my_executable main.cpp helper.cpp)
3. 添加库文件
使用 add_library
命令来指定库文件的源文件列表。
cmake
深色版本
1add_library(my_library STATIC src/mylibrary.cpp)
4. 链接库文件
使用 target_link_libraries
命令来链接库文件。
cmake
深色版本
1add_executable(my_executable main.cpp)
2target_link_libraries(my_executable my_library)
高级用法
1. 设置编译选项
可以设置编译器标志和其他编译选项。
cmake
深色版本
1set(CMAKE_CXX_STANDARD 14)
2set(CMAKE_CXX_STANDARD_REQUIRED True)
3set(CMAKE_CXX_EXTENSIONS False)
2. 设置输出目录
可以设置可执行文件和库文件的输出目录。
cmake
深色版本
1set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
2set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
3. 包含其他 CMakeLists 文件
可以使用 include
或 add_subdirectory
命令来包含其他 CMakeLists 文件。
cmake
深色版本
1include(some_config.cmake)
2add_subdirectory(subdir)
4. 使用 find_package
可以使用 find_package
命令来查找外部库,并链接到你的项目中。
cmake
深色版本
1find_package(Boost REQUIRED COMPONENTS system filesystem)
2include_directories(${Boost_INCLUDE_DIRS})
3target_link_libraries(my_executable ${Boost_LIBRARIES})
5. 安装目标
可以使用 install
命令来指定安装目标。
cmake
深色版本
1install(TARGETS my_executable DESTINATION bin)
示例项目结构
假设有一个简单的项目结构如下:
深色版本
1my_project/
2├── CMakeLists.txt
3└── src/
4 ├── CMakeLists.txt
5 └── main.cpp
my_project/CMakeLists.txt
cmake
深色版本
1cmake_minimum_required(VERSION 3.10)
2project(MyProject VERSION 1.0 LANGUAGES CXX)
3
4add_subdirectory(src)
src/CMakeLists.txt
cmake
深色版本
1add_executable(my_executable main.cpp)
常用命令总结
cmake_minimum_required
: 指定所需的 CMake 最低版本。project
: 设置项目名称、版本号等信息。add_executable
: 添加可执行文件。add_library
: 添加库文件。target_link_libraries
: 链接库文件。set
: 设置变量。include
: 包含其他 CMakeLists 文件。add_subdirectory
: 添加子目录。find_package
: 查找外部库。install
: 指定安装目标。
使用 CMake
生成 Makefile 或项目文件
sh
深色版本
1mkdir build
2cd build
3cmake ..
4make
使用 Visual Studio
sh
深色版本
1mkdir build
2cd build
3cmake .. -G "Visual Studio 16" # 选择对应的 Visual Studio 版本
总结
CMake 是一个功能强大的构建系统,通过编写 CMakeLists.txt
文件可以轻松地管理复杂的构建过程。掌握 CMake 的基本概念和命令,可以帮助你高效地组织和构建 C++ 项目。通过实践上述示例,你可以更好地理解 CMake 的用法,并将其应用到实际项目中。