目录

  1. CMake概述
  2. CMakeLists.txt文件
  3. 基本命令
  4. 常用变量与选项
  5. 构建项目的基本流程
  6. 参考资料

CMake概述

CMake 是一个跨平台的构建管理工具,它通过编写 CMakeLists.txt 文件来描述项目的构建过程,生成适用于不同平台的构建文件(如 Makefile、Visual Studio 项目文件、Xcode 工程文件等)。它能够自动化构建流程,管理依赖,并支持多种编译器和平台,使得跨平台开发变得更加简便。

CMake 不直接进行编译,它生成由特定构建系统(如 makeMSBuild)使用的构建文件,这些文件然后被用来实际执行编译工作。


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

指定构建类型,常见的值有 DebugReleaseRelWithDebInfoMinSizeRel

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_DIRCMAKE_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_FLAGSCMAKE_C_FLAGS

用于设置 C++ 或 C 编译器的标志。

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")


构建项目的基本流程

CMake 构建项目的基本流程包括以下几个步骤:

  1. 创建构建目录
    通常,我们在项目根目录下创建一个单独的构建目录(build)。这样可以保持源代码目录的整洁。 mkdir build cd build
  2. 运行 cmake 命令
    通过 cmake 命令生成构建文件。 cmake .. .. 是源代码目录(即 CMakeLists.txt 文件所在的目录)。
  3. 编译项目
    使用生成的构建文件进行编译: cmake --build .
  4. 安装项目(可选)
    如果在 CMakeLists.txt 中定义了安装规则,可以运行以下命令将构建的文件安装到指定目录: cmake --install .

参考资料