直接运行 vcpkg install fmt 即可下载、编译并安装 fmt 库到默认 triplet(如 x64-windows),vcpkg 自动处理依赖、构建工具链和导出逻辑;需预先安装 visual studio(含 c++ 工作负载)或 xcode 命令行工具,并建议先执行 vcpkg integrate install。

怎么用 vcpkg 安装一个库(比如 fmt)
直接运行 vcpkg install fmt 就能下载、编译、安装 fmt 库到默认 triplet(通常是 x64-windows)。vcpkg 会自动处理依赖、构建工具链和导出逻辑。
常见错误现象:vcpkg install fmt 报错 “Could not locate Visual Studio installation”——说明没装 VS 或没启用 C++ 工作负载;vcpkg 依赖 cmake 和 Visual Studio Build Tools(Windows)或 Xcode command line tools(macOS)。
- 安装前先运行
vcpkg integrate install,让 vcpkg 注册到全局构建环境(后续 CMake 项目可自动识别) - 想换平台或架构?加 triplet 参数,例如
vcpkg install fmt:x86-windows或vcpkg install fmt:arm64-osx - 不指定版本默认装最新稳定版;要锁定版本,得用
vcpkg install fmt@10.2.1(前提是该版本在 registry 中存在)
如何在 CMake 项目里链接 vcpkg 安装的库
vcpkg 不是系统级包管理器,它不修改 PATH 或注册 DLL,而是通过 CMake 工具链文件注入路径和 target。关键不是“找头文件”,而是让 CMake 知道从哪加载 find_package() 配置。
典型做法:在 cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=[vcpkg-root]/scripts/buildsystems/vcpkg.cmake 中显式传入 toolchain 文件。
- 必须用
-DCMAKE_TOOLCHAIN_FILE,不能只靠find_package(fmt)——否则 CMake 找不到 config 模块 - 如果项目已用
find_package(fmt CONFIG REQUIRED),且 toolchain 正确,CMake 会自动找到fmt::fmttarget - 不推荐手动设置
include_directories()或link_directories():vcpkg 的 target 包含完整接口属性(如 compile definitions、private link deps),手写容易漏
vcpkg list / remove / upgrade 怎么用
vcpkg list 显示当前已安装的所有库及 triplet;vcpkg remove fmt 卸载指定库;vcpkg upgrade 列出可更新的包,加 --no-dry-run 才真正重编译安装。
容易踩的坑:vcpkg remove fmt 不会删掉被其他库依赖的头文件或静态库(vcpkg 默认启用“引用计数式卸载”),但 vcpkg remove --outdated 会清掉所有未被显式安装的旧版本缓存。
-
vcpkg list输出里带[bracket]表示该库是作为依赖自动装上的,不是你install的主包 -
vcpkg upgrade --no-dry-run会重新编译所有过期包,耗时长;建议先vcpkg update拉取 registry 变更,再决定是否升级 - 卸载后 CMake cache 可能还残留旧路径,建议
rm -rf build/再重新 configure
为什么 CMakeLists.txt 里 find_package 报错“could not find fmtConfig.cmake”
根本原因:CMake 没通过 vcpkg toolchain 加载其提供的 find 模块路径。vcpkg 不把 config 文件扔进系统 CMAKE_MODULE_PATH,它靠 toolchain 注入 CMAKE_PREFIX_PATH,让 find_package() 能定位到 share/fmt/ 下的配置。
验证方法:在 CMake configure 阶段加 -DCMAKE_VERBOSE_MAKEFILE=ON,看日志里 CMAKE_PREFIX_PATH 是否包含 vcpkg 的 installed/ 目录。
- 漏传
-DCMAKE_TOOLCHAIN_FILE是最常见原因;即使vcpkg integrate install过,VS 或 CLion 也不一定自动启用它 - 某些 IDE(如 VS2022)支持在 CMake Settings.json 里设
"cmakeToolchain"字段,填绝对路径到vcpkg.cmake - 如果用
add_subdirectory(vcpkg)方式集成,那是老 vcpkg 版本的 hack 做法,新版不推荐,易和 triplet 冲突
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











