目录
CMake概述
CMake 是一个跨平台的构建管理工具,它通过编写 CMakeLists.txt
文件来描述项目的构建过程,生成适用于不同平台的构建文件(如 Makefile、Visual Studio 项目文件、Xcode 工程文件等)。它能够自动化构建流程,管理依赖,并支持多种编译器和平台,使得跨平台开发变得更加简便。
CMake 不直接进行编译,它生成由特定构建系统(如 make
或 MSBuild
)使用的构建文件,这些文件然后被用来实际执行编译工作。
CMakeLists.txt文件
CMakeLists.txt
是 CMake 的配置文件,它用于定义项目的构建过程。每个 CMake 项目通常都有一个根目录下的 CMakeLists.txt
文件,构建过程通过执行该文件中定义的指令来进行。
以下是一个简单的 CMakeLists.txt
文件示例:
cmake_minimum_required(VERSION 3.10) # 设置CMake的最低版本要求
project(MyProject VERSION 1.0) # 设置项目名称和版本
# 添加源文件
add_executable(MyExecutable main.cpp)
# 设置编译选项
set(CMAKE_BUILD_TYPE Debug)
# 链接库
target_link_libraries(MyExecutable PRIVATE pthread)
文件内容说明:
cmake_minimum_required(VERSION 3.10)
:指定该项目支持的最低 CMake 版本。project(MyProject VERSION 1.0)
:设置项目的名称和版本号。add_executable(MyExecutable main.cpp)
:定义要编译的可执行文件及其源代码。set(CMAKE_BUILD_TYPE Debug)
:设置编译类型,例如 Debug 或 Release。target_link_libraries(MyExecutable PRIVATE pthread)
:链接外部库,这里链接的是pthread
库。
基本命令
CMake 的基本命令分为两类:用于构建的命令和用于管理项目配置的命令。
1. cmake .
在项目根目录执行该命令,CMake 会查找当前目录下的 CMakeLists.txt
文件并生成构建文件。
cmake .
2. cmake --build .
编译项目。该命令会执行前面生成的构建文件(如 Makefile),并编译项目。
cmake --build .
3. cmake --install .
安装构建的项目。通常在 CMakeLists.txt
中定义了安装规则时使用。
cmake --install .
4. cmake --version
显示当前安装的 CMake 版本信息。
cmake --version
常用变量与选项
CMake 提供了许多内置变量和选项,帮助控制构建的行为。
1. CMAKE_BUILD_TYPE
指定构建类型,常见的值有 Debug
、Release
、RelWithDebInfo
和 MinSizeRel
。
set(CMAKE_BUILD_TYPE Debug)
2. CMAKE_INSTALL_PREFIX
指定安装路径。默认为 /usr/local
(Linux)或 C:/Program Files
(Windows)。
set(CMAKE_INSTALL_PREFIX "/path/to/install")
3. CMAKE_SOURCE_DIR
和 CMAKE_BINARY_DIR
CMAKE_SOURCE_DIR
:源代码目录,即CMakeLists.txt
文件所在的目录。CMAKE_BINARY_DIR
:构建文件目录,通常是cmake
命令运行时指定的目录。
message(STATUS "Source directory: ${CMAKE_SOURCE_DIR}")
message(STATUS "Binary directory: ${CMAKE_BINARY_DIR}")
4. CMAKE_CXX_FLAGS
和 CMAKE_C_FLAGS
用于设置 C++ 或 C 编译器的标志。
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
构建项目的基本流程
CMake 构建项目的基本流程包括以下几个步骤:
- 创建构建目录
通常,我们在项目根目录下创建一个单独的构建目录(build
)。这样可以保持源代码目录的整洁。mkdir build cd build
- 运行
cmake
命令
通过cmake
命令生成构建文件。cmake ..
..
是源代码目录(即CMakeLists.txt
文件所在的目录)。 - 编译项目
使用生成的构建文件进行编译:cmake --build .
- 安装项目(可选)
如果在CMakeLists.txt
中定义了安装规则,可以运行以下命令将构建的文件安装到指定目录:cmake --install .
发表回复