2. 1.2 环境安装与配置

导语

在上一节中,我们了解了CMake的诞生背景以及现代CMake的核心理念。不过,光知道理论还不够,所谓“工欲善其事,必先利其器”。本节将手把手带你完成CMake的安装、版本管理以及主流开发环境的配置。无论你使用的是Windows、macOS还是Linux,都能找到对应的步骤。请务必跟着操作一遍,因为下一节我们就要开始编写第一个CMake项目了。

各平台安装方法

CMake的安装方式非常灵活,你可以从官网下载图形化安装包,也可以使用命令行工具一键安装。对于初学者,我推荐优先使用包管理器,因为后续升级更方便。

Windows:安装包与解压即用

Windows用户最直观的方式是访问 CMake官方下载页,下载 .msi 安装程序。安装过程中,请务必勾选 Add CMake to the system PATH for all users,这样打开终端就能直接使用 cmake 命令。

如果你更喜欢免安装的绿色版本,可以下载 .zip 压缩包,解压后将 bin 目录(例如 C:cmake-3.28.0-windows-x86_64bin)手动添加到系统的 PATH 环境变量中。验证安装是否成功的方法很简单:

# 打开 PowerShell 或 CMD
cmake --version

# 预期输出类似:
# cmake version 3.28.0
#
# CMake suite maintained and supported by Kitware (kitware.com/cmake).

macOS:命令行与图形化安装

macOS用户除了下载 .dmg 安装包外,更推荐通过终端安装。首先安装Xcode命令行工具(如果还没有安装的话):

xcode-select --install

接着你可以下载macOS专用的CMake发行版,或者直接用Homebrew(下一节会详细介绍)。

Linux:发行版软件源安装

各大Linux发行版的官方源中通常都包含CMake,但版本往往比较旧。对于学习本教程,我强烈建议安装CMake 3.20 或更高版本(我们后面的示例大量使用了现代CMake特性)。

以 Ubuntu/Debian 为例,基础安装命令如下:

sudo apt update
sudo apt install cmake

# 验证
cmake --version

如果系统自带的版本过低,不要担心,下一节我会教你如何通过官方仓库或手动安装获取最新版。

使用包管理器安装

包管理器是管理开发环境的最佳伙伴,它能帮你处理依赖、升级和卸载。下面介绍不同平台下主流的CMake安装方式。

apt(Ubuntu/Debian):接入Kitware官方仓库

Ubuntu默认源的CMake版本通常滞后半年到一年。为了获取最新版本,建议添加Kitware官方APT仓库。以下命令适用于Ubuntu 22.04/24.04:

# 1. 安装依赖
sudo apt-get update
sudo apt-get install ca-certificates gpg wget

# 2. 添加Kitware官方GPG密钥
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | 
    gpg --dearmor - | 
    sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null

# 3. 添加仓库(以 jammy 22.04 为例,若为 noble 24.04 请替换)
echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] 
https://apt.kitware.com/ubuntu/ jammy main' | 
sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null

# 4. 更新并安装
sudo apt-get update
sudo apt-get install cmake

Homebrew(macOS/Linux通用)

Homebrew是macOS事实上的标准包管理器,同时在Linux上也越来越流行。安装CMake只需要一行命令:

# 安装
brew install cmake

# 升级到最新版
brew upgrade cmake

# 查看信息
brew info cmake

Chocolatey 与 Winget(Windows)

对于Windows开发者,Chocolatey 和系统自带的 winget 都非常方便。

使用 Chocolatey 安装(需要管理员权限):

# 安装并自动加入系统PATH
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'

# 或者只添加到当前用户PATH
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=User'

使用 Winget(Windows 10 1709+ 和 Windows 11 内置):

winget install Kitware.CMake

pip(Python环境)

如果你已经安装了Python,这是一个跨平台的“偷懒”办法,尤其适合在CI容器或临时环境中快速部署:

pip install cmake

# 验证
cmake --version

vcpkg 工具链

虽然vcpkg主要用来安装C++库,但它内部也会下载一个稳定版本的CMake作为构建工具。如果你后续打算使用vcpkg管理C++依赖,实际上vcpkg目录下的 downloads/tools/cmake 中已经自带了CMake。你可以将其临时加入PATH:

# 假设vcpkg克隆在 ~/vcpkg
export PATH="$HOME/vcpkg/downloads/tools/cmake-3.28.0-linux/cmake-3.28.0-linux-x86_64/bin:$PATH"
cmake --version

CMake版本管理与多版本切换

在实际工作中,你可能会遇到这样的情况:公司老项目需要CMake 3.16,而新项目要求3.28+;或者你想尝试CMake的最新特性,但又不想破坏现有环境。因此,学会管理多版本至关重要。

Linux:update-alternatives 方案

在Debian/Ubuntu系Linux中,update-alternatives 是管理系统多版本工具的标准方案。假设你手动下载了两个版本的二进制分发包,并分别解压到了 /opt/cmake-3.25/opt/cmake-3.28

# 注册两个版本的cmake
sudo update-alternatives --install /usr/local/bin/cmake cmake /opt/cmake-3.28/bin/cmake 100
sudo update-alternatives --install /usr/local/bin/cmake cmake /opt/cmake-3.25/bin/cmake 50

# 注册 ctest 和 cpack(可选,但推荐)
sudo update-alternatives --install /usr/local/bin/ctest ctest /opt/cmake-3.28/bin/ctest 100
sudo update-alternatives --install /usr/local/bin/cpack cpack /opt/cmake-3.28/bin/cpack 100

# 交互式切换版本
sudo update-alternatives --config cmake

执行 --config 后,你会看到如下交互提示,输入数字即可切换:

There are 2 choices for the alternative cmake (providing /usr/local/bin/cmake).

  Selection    Path                        Priority   Status
------------------------------------------------------------
* 0            /opt/cmake-3.28/bin/cmake    100       auto mode
  1            /opt/cmake-3.25/bin/cmake    50        manual mode
  2            /opt/cmake-3.28/bin/cmake    100       manual mode

Press <enter> to keep the current choice[*], or type selection number:

通用方案:目录隔离与PATH切换

无论你是Windows、macOS还是Linux,最通用的多版本管理思路都是目录隔离:每个版本拥有独立的安装目录,通过修改 PATH 环境变量来决定当前使用哪个版本。

以Linux/macOS为例,你可以在 ~/.bashrc~/.zshrc 中设置别名,而非直接覆盖系统CMake:

# 为不同版本设置别名
alias cmake328='/opt/cmake-3.28/bin/cmake'
alias cmake325='/opt/cmake-3.25/bin/cmake'
alias ctest328='/opt/cmake-3.28/bin/ctest'

# 使用时明确指定版本
cmake328 --version

在Windows PowerShell中,你可以通过函数实现类似效果:

# 添加到 $PROFILE 配置文件中
function cmake328 { C:cmake-3.28bincmake.exe @args }
function cmake325 { C:cmake-3.25bincmake.exe @args }

# 使用
cmake328 --version

Kitware官方脚本安装法

Kitware为Linux提供了 .sh 自解压脚本,非常适合用于多版本并存。以下示例演示如何将CMake 3.28安装到 /opt 下独立目录:

# 下载
wget https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-linux-x86_64.sh

# 赋予执行权限
chmod +x cmake-3.28.0-linux-x86_64.sh

# 创建目标目录并安装(--skip-license 表示自动接受许可)
sudo mkdir -p /opt/cmake-3.28
sudo ./cmake-3.28.0-linux-x86_64.sh --skip-license --prefix=/opt/cmake-3.28

# 验证路径
ls /opt/cmake-3.28/bin/
# 输出应包含: cmake ctest cpack ccmake

临时切换版本技巧

如果你只是临时想试用某个版本,不需要修改任何配置文件,直接在当前终端会话中修改 PATH 即可:

# 将新版本路径放到PATH最前面,优先被找到
export PATH=/opt/cmake-3.28/bin:$PATH

# 验证当前终端使用的版本
which cmake
cmake --version

集成开发环境配置

安装好CMake后,我们还需要让IDE(集成开发环境)或编辑器识别它。下面介绍三款主流工具的配置方法。

Visual Studio(Windows)

Visual Studio 2017及更高版本对CMake提供了原生支持。你不再需要生成 .sln 解决方案文件,可以直接打开包含 CMakeLists.txt 的文件夹。

安装时,请在 Visual Studio Installer 中勾选以下工作负载和组件:

  • 工作负载:使用C++的桌面开发
  • 单个组件(可选但建议):适用于Windows的C++ CMake工具
  • 单个组件:最新的 Windows SDK

打开CMake项目的方式是:点击 文件 → 打开 → 文件夹,然后选择你的项目根目录。Visual Studio会自动检测到 CMakeLists.txt,并在后台运行CMake配置。你可以在工具栏直接切换构建类型(Debug/Release)并启动调试。

CLion(跨平台)

JetBrains CLion对CMake的支持是开箱即用的。CLion会自动扫描系统PATH中的CMake可执行文件。如果你想手动指定某个特定版本(例如刚才安装的3.28),请进入设置:

Settings / Preferences → Build, Execution, Deployment → Toolchains

CMake 字段旁点击下拉框,选择 自定义 CMake 可执行文件,然后填入路径:

  • Windows: C:cmake-3.28bincmake.exe
  • Linux/macOS: /opt/cmake-3.28/bin/cmake

CLion会自动检测CMake版本,并在事件日志中提示你是否需要更新。

VS Code(跨平台 & 免费)

VS Code是目前最受欢迎的轻量级编辑器,配合Microsoft官方的 CMake Tools 扩展,可以获得媲美IDE的体验。

步骤1:安装扩展

在扩展商店搜索并安装:CMake Tools(Microsoft出品)和 CMake(语法高亮支持)。

步骤2:配置CMake路径

按下 Ctrl+,(或 Cmd+,)打开设置,搜索 cmake cmakePath,填入你的CMake路径。或者直接在 .vscode/settings.json 中配置:

{
    "cmake.cmakePath": "/opt/cmake-3.28/bin/cmake",
    "cmake.configureOnOpen": true,
    "cmake.buildDirectory": "${workspaceFolder}/build/${buildType}",
    "cmake.generator": "Ninja"
}

步骤3:配置Kits(编译器套件)

CMake Tools通过Kits来知道使用哪个编译器。首次安装扩展时,它会自动扫描系统上的编译器。你也可以手动编辑 cmake-kits.json

[
    {
        "name": "GCC 13.1 x86_64",
        "compilers": {
            "C": "/usr/bin/gcc",
            "CXX": "/usr/bin/g++"
        },
        "preferredGenerator": {
            "name": "Ninja"
        },
        "cmakeSettings": {
            "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
        }
    }
]

配置完成后,VS Code底部状态栏会出现CMake的快捷操作区:选择Build类型、启动Build、运行调试等,一键直达。

验证IDE集成:最小测试项目

为了确认IDE和CMake的联动正常,我们在任意空文件夹中创建两个文件:

CMakeLists.txt

cmake_minimum_required(VERSION 3.20)
project(VerifyEnv LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(verify main.cpp)

# 故意输出一条状态信息,方便在IDE的CMake输出窗口查看
message(STATUS "CMake version: ${CMAKE_VERSION}")
message(STATUS "CXX Compiler: ${CMAKE_CXX_COMPILER}")

main.cpp

#include <iostream>

int main() {
    std::cout << "Hello, CMake IDE!" << std::endl;
    return 0;
}

用上述任意一种IDE打开该文件夹。如果能在IDE的输出窗口看到CMake配置成功的信息,并且能编译运行出 Hello, CMake IDE!,说明环境完全就绪。

常见问题速查

在配置环境的最后,我整理了几个新手最常踩的坑:

  • 命令行输入 cmake 提示找不到命令?
    检查PATH环境变量是否包含CMake的 bin 目录。Windows用户需要重启终端或IDE才能加载新的PATH。
  • Ubuntu apt安装的CMake版本太旧?
    请务必添加Kitware官方APT仓库(见上文),不要使用默认源。
  • VS Code无法识别CMakeLists.txt?
    确认已安装CMake Tools扩展,且 cmake.cmakePath 指向的是可执行文件路径,而不是目录。
  • CLion提示CMake版本不兼容?
    CMakeLists.txt 第一行将 cmake_minimum_required 调低,或升级你的CMake版本。

结语

至此,你应该已经成功在电脑上安装了CMake,并掌握了版本管理的小技巧,同时配置好了自己喜欢的开发环境。这些准备工作看似琐碎,却是后续所有实战的基石。

在下一节 1.3 第一个CMake项目 中,我们将正式编写CMake脚本,带你走完“配置(Configure)→ 生成(Generate)→ 构建(Build)”的完整流程,并建立源码外构建(Out-of-source)的正确习惯。敬请期待!

请登录后发表评论

    没有回复内容

正在唤醒异次元光景……