2、环境准备:安装CMake和CPack、验证安装、配置构建环境(Windows/Linux/macOS)、设置编译器
好,咱们正式开始动手。这一章说白了就是搭台子——把CMake和CPack装好,把编译器配通,确保后续所有打包操作能顺利跑起来。
我见过不少同学一上来就写CMakeLists.txt,结果编译都过不了,最后发现是环境没配好。嗯,咱们别走这个弯路。
2.1 安装CMake和CPack
CMake和CPack是绑在一起的。你装好CMake,CPack自然就有了。我个人的习惯是:永远装最新稳定版,别用系统自带的旧版本,坑太多。
Windows 安装
- 去 cmake.org/download 下载
cmake-xxx-windows-x86_64.msi - 双击安装,记得勾选 "Add CMake to the system PATH for all users"
- 安装完成后,打开命令提示符验证:
cmake --version
如果显示版本号,说明装好了。我遇到过有人忘了勾PATH,结果命令行死活找不到cmake——别慌,手动加一下环境变量就行。
Linux 安装
Linux上最省事的方式是用包管理器。但要注意——apt或yum里的版本往往偏老。
# Ubuntu / Debian
sudo apt update
sudo apt install cmake
# CentOS / RHEL / Fedora
sudo yum install cmake
# 或者
sudo dnf install cmake
装完验证:
cmake --version
如果版本低于3.20,我建议你手动装。为什么?因为低版本的CPack对某些打包格式支持不好。我曾经被CMake 3.10坑过——打包出来的deb文件结构不对,排查了一下午。
手动安装方式:
wget https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0-linux-x86_64.tar.gz
tar -xzf cmake-3.28.0-linux-x86_64.tar.gz
sudo mv cmake-3.28.0-linux-x86_64 /opt/cmake
sudo ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
macOS 安装
macOS上我推荐用Homebrew,干净利落:
brew install cmake
验证:
cmake --version
如果你用MacPorts也行,但Homebrew的更新更及时。我个人两台Mac都用brew,没出过问题。
2.2 验证CPack是否可用
装好CMake后,CPack应该自动可用。验证一下:
cpack --version
如果显示版本号,说明CPack已经就绪。如果提示"command not found",那可能是PATH没配好。Windows上重新打开终端试试,Linux/macOS检查一下软链接。
2.3 配置构建环境
环境配置这块,说白了就是让CMake能找到你的编译器。不同平台差别挺大,我一个个说。
Windows:配置Visual Studio
Windows上我几乎只用Visual Studio。CMake会自动检测VS的安装路径,但有个前提——你得从开发者命令提示符或x64 Native Tools Command Prompt里运行cmake。
为什么?因为那些命令行窗口已经帮你设好了环境变量。你直接打开普通cmd,cmake可能找不到cl.exe。
配置示例:
# 在 "x64 Native Tools Command Prompt for VS 2022" 中执行
cmake -B build -G "Visual Studio 17 2022" -A x64
我个人习惯用Ninja,更快:
cmake -B build -G "Ninja" -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl
Linux:配置GCC或Clang
Linux上CMake会自动找gcc/g++。你通常不需要额外配置。但如果你想用Clang:
cmake -B build -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
我遇到过一种情况:系统里同时装了gcc-9和gcc-11,CMake默认用了gcc-9。想用新版怎么办?
cmake -B build -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11
或者设置环境变量:
export CC=gcc-11
export CXX=g++-11
cmake -B build
macOS:配置Xcode或Clang
macOS上CMake默认用Clang(Xcode自带的)。你什么都不用配,直接跑cmake就行。
但如果你想用Xcode项目格式:
cmake -B build -G "Xcode"
我个人在macOS上开发时,喜欢用Ninja + Clang的组合,编译速度比Xcode快不少:
cmake -B build -G "Ninja"
2.4 验证编译器配置
环境配好了,咱们写个最简单的CMakeLists.txt验证一下:
# CMakeLists.txt
cmake_minimum_required(VERSION 3.20)
project(HelloCPack LANGUAGES CXX)
add_executable(hello main.cpp)
再写个main.cpp:
#include <iostream>
int main() {
std::cout << "Hello CPack!" << std::endl;
return 0;
}
然后执行:
cmake -B build
cmake --build build
./build/hello # Windows上是 build\Release\hello.exe
如果看到"Hello CPack!",说明你的环境全部就绪。如果报错,别急——八成是编译器没找到,或者CMake版本太低。
2.5 环境配置速查表
| 平台 | 推荐编译器 | CMake生成器 | 注意事项 |
|---|---|---|---|
| Windows | MSVC (Visual Studio) | Ninja 或 VS | 必须从开发者命令提示符运行 |
| Linux | GCC 或 Clang | Unix Makefiles 或 Ninja | 注意gcc版本,建议≥9 |
| macOS | Apple Clang | Ninja 或 Xcode | 安装Xcode Command Line Tools |
好了,环境准备就到这儿。下一章咱们开始写真正的CMakeLists.txt,把CPack集成进去。你想想看,如果连cmake --version都跑不通,后面打包再花哨也没用——所以这一步值得认真对待。