1374 字
7 分钟
跨平台部署 CMake 与 vcpkg 进行 C++ 开发

前言与基本概念#

近日在做本科毕设的实验环境搭建,涉及到了基于 vcpkg 进行 C++ 库管理的开发工作。由于程序以 FLTK 为 GUI 框架且遵循 MVVM 架构,需要使用 CMake 进行项目配置。笔者在手持 Mac 与 Windows 双设备的同时,被要求进行 Windows/Linux 双平台的软件开发,为此经过资料收集与实践,最终总结出在 Windows/Linux/Mac 三平台下,如何在 VSCode 中配置 CMake 并使用 vcpkg 的方法,能做到不同平台下的开发体验一致。

我们的目标是在不同的平台上用近乎相同的方式进行 vcpkg + CMake 项目的配置。在微软官方的 vcpkg 文档中,已经介绍了 vcpkg 的相关概念。简要来说,vcpkg 是微软推出的基于 C++ 语言的跨平台包管理工具,可以看作是 C++ 领域的 npm 或 pip。

CMake 是适用于 C/C++ 项目的跨平台构建系统,通过 CMakeLists.txt 文件来定义项目的构建过程。vcpkg 与 CMake 的结合使用,可以简化 C++ 项目的依赖管理和构建配置。

这种项目的一般配置与构建流程是:

  1. 配置好 CMake 与 vcpkg 环境;
  2. 在项目的 CMakeLists.txt 文件中指定 vcpkg 的工具链文件;
  3. 安装 vcpkg 所涉及的依赖库;
  4. 使用 CMake 生成构建文件并编译项目。

上述工具都是跨平台的,至于代码编辑器,我们使用同样跨平台的 Microsoft Visual Studio Code (VSCode),并安装相关插件以支持 CMake 和 C++ 开发。

环境配置#

注意

下文中,默认读者掌握基本的命令行操作和 Git 使用方法。同时,Windows 平台下,使用 Powershell 作为命令行工具。

CMake 环境#

Windows 平台,前往 CMake 官方网站下载最新版本的安装包,安装时注意勾选“Add CMake to the system PATH for all users”选项,以便在命令行中直接使用 cmake 命令。

Linux 平台,可以使用包管理器安装 CMake。例如,在 Ubuntu 上可以运行以下命令:

Terminal window
sudo apt-get update
sudo apt-get install cmake

macOS 平台,可以使用 Homebrew 安装 CMake:

Terminal window
brew install cmake

不管哪种平台安装,最后通过命令行输入 cmake --version 都可以查看是否安装成功。

vcpkg 环境#

首先在你所知道的一个路径下,克隆 vcpkg 仓库:

Terminal window
git clone https://github.com/microsoft/vcpkg.git

然后执行启动脚本,Windows 平台运行:

Terminal window
cd vcpkg; .\bootstrap-vcpkg.bat

Linux 和 macOS 平台运行:

Terminal window
cd vcpkg && ./bootstrap-vcpkg.sh

最后需要将 vcpkg 添加到环境变量,以便在命令行中直接使用 vcpkg 命令。

Windows 平台可以通过系统设置添加环境变量,Linux 和 macOS 平台可以在 ~/.bashrc~/.zshrc 文件(根据你实际正在使用的 shell)中添加:

Terminal window
export VCPKG_ROOT=/path/to/vcpkg
export PATH=$VCPKG_ROOT:$PATH

请注意这里的 /path/to/vcpkg 替换为你实际的 vcpkg 路径。

最后做到在命令行中输入 vcpkg --version 显示版本号即可。

项目配置#

这里以一个 FLTK 界面程序为例,参见仓库中的 Hello 项目。打开项目目录,可以看到:

.
├── CMakeLists.txt
├── code
│   ├── CMakeLists.txt
│   └── main.cpp
├── vcpkg-configuration.json
└── vcpkg.json
2 directories, 5 files

这里 code 文件夹中的 CMakeLists 已经配置好,我们关心根目录下的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.10)
project(Hello)
find_package(FLTK CONFIG REQUIRED)
add_subdirectory(code code)
注意

第三句的 fltk 需要改为大写 FLTK,具体原因将在后面解释。

这里的第三句 find_package(FLTK CONFIG REQUIRED) 指定了需要使用 FLTK 库,并且要求 CMake 使用配置模式(CONFIG)来查找该库。配置模式意味着 CMake 会寻找由 vcpkg 提供的配置文件,这些文件通常位于 vcpkg 的安装目录中。

再查看 vcpkg.json 文件:

{
"dependencies": [
"fltk"
]
}

这里指定了项目所需的依赖库为 FLTK,vcpkg 会根据这个文件来安装和管理项目的依赖。所以我们应该先 vcpkg install 来进行 FLTK 库的安装,然后再使用 CMake 进行项目的配置和构建。

但是总是这样做未免繁琐,我们在 VSCode 中使用 CMake 插件来简化流程。

VSCode 配置#

先安装好 CMake Tools 插件和 C/C++ 插件。安装好后打开项目时上方会弹出选择工具链的选项,选择你想要用的编译器即可,例如 gcc 或是 MSVC 等等。

然后在项目根目录下新建 .vscode/settings.json 文件,内容如下:

{
"cmake.configureSettings": {
"CMAKE_TOOLCHAIN_FILE": "/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake"
// 这里的 /path/to/vcpkg 替换为你实际的 vcpkg 路径
// 对于 Windows 平台,使用符合 Windows 格式的路径
},
"cmake.generator": "Ninja", // 对于 macOS 和 Linux 平台,使用 "Unix Makefiles"
"cmake.buildDirectory": "${workspaceFolder}/build"
}

这里的 CMAKE_TOOLCHAIN_FILE 指定了 vcpkg 的工具链文件路径,CMake 会使用这个文件来配置项目的构建环境,从而自动识别和链接通过 vcpkg 安装的库。

修改好后,点击下方状态栏的启动,即可开启配置过程。配置成功后,点击下方状态栏的构建按钮,即可进行项目的编译。

Tips#

  • 对于某些系统,在配置项目的过程中可能出错,这时可以去查看错误报告进行相应的修正。例如笔者在 Linux 平台部署的时候多次遇到错误,经过检查是没有安装 opengl 等工具,apt 安装后再次配置即可成功。
  • CMakeLists.txt 文件中的包名需要与 vcpkg 中的包名完全一致,笔者在 macOS 平台上使用小写 fltk 时多次报错,改为大写 FLTK 后成功。
跨平台部署 CMake 与 vcpkg 进行 C++ 开发
https://fuwari.vercel.app/posts/vcpkg-vscode/
作者
零式岚
发布于
2025-08-20
许可协议
CC BY-NC-SA 4.0