【C++】vcpkg与CMake的关系

vcpkgCMake 是两个协同工作的工具,它们在现代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": 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值