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以上 |
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的配置选项,让你能定制出更专业的安装包。先休息一下,喝口水,咱们马上继续。