1 创建 CMake 项目
1.1 安装 CMake
一般情况下通过包管理器安装即可,但在某些 Linux 发行版中通过这种方式安装的 CMake 版本较旧。
# Debian / Ubuntu
sudo apt install cmake
1.2 创建 CMakeLists.txt
在项目根目录下创建 CMakeLists.txt
。它指导 CMake 组织整个项目结构。
1.3 简单的配置结构
以下是一个最基本的 CMakeLists.txt
:
# 指定本项目所需 CMake 的最低版本
cmake_minimum_required(VERSION 3.28.0)
# 本项目名为 “MyProject”
project(MyProject)
# 添加目标、源文件
add_executable(target_name src/main.cpp)
第一行代码指定了构建本项目所需的最低 CMake 版本。如果你难以抉择,可以填 3.28.0
。如果你比较激进,可以填你当前安装的最新版本(推动行业进步)。
第二行代码给本项目随便起个名字。
第三行代码中的 target_name
是目标名称,也是编译出的可执行文件名,main.cpp
是源代码文件名。假如你的源代码文件在 src 目录下,需写成 src/main.cpp
。
1.4 CMake 预设
CMake 3.19 引入了预设。通过 CMakePresets.json
,可以预先设定编译器和生成器(Generators)等操作,简化配置项目的命令。
CMakePresets.json
与 CMakeLists.txt
应放在同一目录下。
下面是一个简单的 CMake 预设框架,显式指定了生成器和编译器:
{
"version": 8,
"configurePresets": [
{
"name": "default",
"hidden": true,
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
},
"environment": {
"CC": "gcc",
"CXX": "g++"
}
},
{
"name": "ninja-debug",
"inherits": "default",
"displayName": "Ninja Debug",
"description": "Ninja Debug",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "ninja-release",
"inherits": "default",
"displayName": "Ninja Release",
"description": "Ninja Release",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
}
]
}
要查看当前可用的生成器,执行:cmake --help
,CMake 会在输出内容的最后向你展示本机可用的生成器。
1.5 配置项目
每次修改完 CMakeLists.txt
或 CMakePresets.json
后都需要先 “配置” 才能编译生成可执行文件:
cmake -B build --preset ninja-debug
1.6 构建 / 生成
cmake --build build/
2 vcpkg 包管理器
2.1 配置环境变量
先设置环境变量 VCPKG_ROOT
为 vcpkg 的安装路径。
# ~/.bashrc
export VCPKG_ROOT=
export PATH=$VCPKG_ROOT:$PATH
记得 source ~/.bashrc
。
2.2 在 CMake 中使用 vcpkg 工具链
向 CMakePresets.json
configurePresets
的默认预设中添加:
"toolchainFile": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
2.3 创建 vcpkg 依赖清单
在项目根目录或 CMakeLists.txt
的同级目录中运行:
vcpkg new --application
添加依赖项:
vcpkg add port package-name
2.4 添加外部包引用
以下内容加到 project()
之后:
find_package(glfw3 CONFIG REQUIRED)
target_link_libraries(target_name PRIVATE glfw)
2.5 重新配置项目
按照步骤 1.5 重新配置项目时,vcpkg 会自动将外部包安装到项目目录 build/vcpkg_installed
中。