vcpkg 和 CMake 是两个协同工作的工具,它们在现代C++项目中扮演着不同但互补的角色。
核心关系比喻
把C++项目构建比作做饭:
- CMake = 菜谱和厨房管理(描述怎么做饭、用什么工具)
- vcpkg = 食材供应商和仓库管理(提供原材料和调料)
各自的主要职责
CMake - 构建系统生成器
# CMakeLists.txt - 描述如何构建项目
cmake_minimum_required(VERSION 3.15)
project(MyProject)
# 告诉CMake:我需要fmt库
find_package(fmt REQUIRED)
add_executable(my_app main.cpp)
# 告诉CMake:把我的app和fmt库链接起来
target_link_libraries(my_app PRIVATE fmt::fmt)
CMake的作用:
- 描述项目的构建过程
- 生成平台特定的构建文件(Visual Studio, Makefile, Ninja等)
- 管理编译选项、链接库、依赖关系
vcpkg - C++包管理器
# 安装依赖库
vcpkg install fmt fmt:x64-windows
vcpkg的作用:
- 下载、编译、安装第三方库
- 解决库的依赖关系
- 提供一致的库查找机制
它们如何协同工作
工作流程示意图:
你的C++项目
↓
CMakeLists.txt (需要fmt库)
↓
vcpkg (提供fmt库) ←→ CMake (查找和使用fmt库)
↓
可执行文件 (成功链接fmt)
具体协作方式:
1. CMake通过vcpkg查找库
# CMakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(MyProject)
# 这行代码会通过vcpkg自动找到fmt库
find_package(fmt REQUIRED)
add_executable(my_app main.cpp)
target_link_libraries(my_app PRIVATE fmt::fmt)
2. 配置CMake使用vcpkg
# 告诉CMake使用vcpkg作为包管理器
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
实际项目示例
项目结构:
my_project/
├── CMakeLists.txt
├── main.cpp
└── vcpkg.json
1. vcpkg.json - 声明项目依赖
{
"name": "my-project",
"version":

最低0.47元/天 解锁文章
2797

被折叠的 条评论
为什么被折叠?



