2、环境准备:安装CMake和CPack,验证环境,第一个Hello World项目

好,咱们正式开始动手。这一章的目标很简单——把CMake和CPack装好,跑通第一个例子。我见过不少新手卡在环境配置上,其实没那么复杂。跟着我来,十分钟搞定。

2.1 安装CMake

CMake的安装方式取决于你的操作系统。我个人习惯用包管理器,干净利落。

Windows用户

去CMake官网下载安装包,选Windows x64 Installer。安装时记得勾选「Add CMake to the system PATH」——这一步很多人会忘,忘了后面就得手动配环境变量,麻烦。

小技巧: 安装完成后,打开命令提示符,输入 cmake --version。如果能显示版本号,说明安装成功。如果提示「不是内部或外部命令」,那就是PATH没配好,重新安装一遍,勾上那个选项。

macOS用户

用Homebrew最省事:

brew install cmake

Linux用户

Ubuntu/Debian系:

sudo apt update
sudo apt install cmake cmake-data

CentOS/RHEL/Fedora系:

sudo yum install cmake

嗯,这里要注意:Linux系统自带的cmake版本可能比较老。我曾经在Ubuntu 18.04上遇到过cmake 3.10,但CPack有些新特性需要3.12以上。建议装完后检查一下版本:

cmake --version

如果版本太低,可以用pip安装新版:

pip install cmake

2.2 CPack在哪?

很多人会问:「CPack是不是要单独安装?」

其实不用。CPack是CMake自带的打包工具,你装好CMake,CPack就跟着来了。验证方法很简单:

cpack --version

能输出版本号,就说明CPack已经就绪。我刚开始学的时候也找了好一会儿,后来才发现它就在CMake的bin目录里,直接就能用。

2.3 验证环境:第一个Hello World

环境装好了,咱们写个最简单的项目试试手。创建一个新文件夹,比如叫 hello_cpack,里面放两个文件。

文件1:main.cpp

#include <iostream>

int main() {
    std::cout << "Hello from CPack!" << std::endl;
    return 0;
}

文件2:CMakeLists.txt

cmake_minimum_required(VERSION 3.12)
project(HelloCPack VERSION 1.0.0 LANGUAGES CXX)

add_executable(hello main.cpp)

# 安装规则:把hello安装到bin目录
install(TARGETS hello DESTINATION bin)

# CPack配置
set(CPACK_PACKAGE_NAME "HelloCPack")
set(CPACK_PACKAGE_VERSION "1.0.0")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A simple Hello World example")
set(CPACK_GENERATOR "ZIP")  # 先试试ZIP格式
include(CPack)
关键点: 最后一行 include(CPack) 必须写。没有这行,CPack就不会生效。我刚开始漏掉过,折腾了半天才发现。

2.4 构建和打包

打开终端,进入 hello_cpack 目录,执行以下命令:

# 第一步:配置
mkdir build
cd build
cmake ..

# 第二步:编译
cmake --build .

# 第三步:打包
cpack

执行完 cpack 后,你会在 build 目录下看到一个 HelloCPack-1.0.0-win64.zip(Windows)或 HelloCPack-1.0.0-Linux.tar.gz(Linux/macOS)文件。解压看看,里面有个 bin 文件夹,放着咱们的 hello 可执行文件。

为什么会这样?因为我们在CMakeLists.txt里写了 install(TARGETS hello DESTINATION bin),CPack就会按照这个规则把文件打包进去。

2.5 常见问题与避坑

问题 原因 解决办法
cpack: command not found CMake没装好,或PATH没配 重新安装CMake,确保勾选PATH选项
CPack Error: Cannot find file: hello 没有先编译就打包 先执行 cmake --build . 生成可执行文件
CMake Error at CMakeLists.txt:12 (include): include could not find load file: CPack CMake版本太低 升级CMake到3.12以上
注意: 如果你用的是Windows,打包时可能会遇到杀毒软件拦截。CPack生成的ZIP文件是正常的,放心使用。我曾经被某杀毒软件误报过,后来加了白名单就没事了。

2.6 试试其他打包格式

CPack支持多种打包格式。咱们刚才用了ZIP,你还可以试试:

  • TGZ:tar.gz格式,Linux上很常用
  • DEB:Debian/Ubuntu的安装包
  • RPM:Red Hat系的安装包
  • NSIS:Windows安装程序

怎么切换?改一下 CPACK_GENERATOR 就行:

set(CPACK_GENERATOR "TGZ")  # 改成TGZ试试

然后重新运行 cpack。你会发现生成的文件变成了 .tar.gz 格式。是不是很简单?

2.7 本章小结

到这步,你已经完成了:

  • 安装了CMake和CPack
  • 验证了环境可用
  • 写了一个完整的Hello World项目
  • 用CPack成功打包

说白了,环境准备就这么点事。下一章咱们会深入CPack的配置选项,让你能定制出更专业的安装包。先休息一下,喝口水,咱们马上继续。