【补充学习】vcpkg是什么?

最近在折腾GTFO的外挂,在翻github的时候遇到了要安装vcpkg包管理工具,突发好奇,想要整明白

标准解释:
C++ 没有统一的包管理机制,而许多第三方库(比如 Boost、OpenCV、fmt、spdlog)安装步骤繁琐(编译配置复杂)、库依赖复杂(A依赖B,B又依赖C)、不同平台路径和构建方式不同(Windows / Linux / macOS)。vcpkg 是一个由 Microsoft 开发的 C++ 包管理工具,主要用于: 安装、管理、和集成 C++ 的第三方库。

个人笔记:

Q1:我使用Everything对整个电脑搜索发现了多个vcpkg文件夹,为什么会这样,它们都是什么?
①C:\Program Files\Microsoft Visual Studio\2022\Community\VC\vcpkg
②C:\Users\Thorns\AppData\Local\vcpkg
③D:\Library\vcpkg

路径类型作用
Visual Studio 附带的内置版本VS 自动用
全局配置路径(不是实际安装)用来“指向”你手动安装的 vcpkg
真正的 vcpkg 安装路径你控制的主要版本


Q2:我项目使用的依赖包下载到那里了、项目文件中多的vcpkg_installed是什么?
这是为了让每个项目的依赖是独立的、可重复的、可版本控制的。在项目目录里看到一个 vcpkg_installed 文件夹,说明你(或你用的构建工具)正在使用一种 “本地安装模式”(或叫 manifest mode)的 vcpkg。这是 vcpkg 的一个非常实用的新特性。这个文件夹是 vcpkg 为你的项目局部生成的库依赖缓存目录,里面存放了你项目使用的库的二进制文件(.lib、.dll)和头文件。它是由 vcpkg 的 清单模式(manifest mode)自动生成的,通常项目中会有vcpkg.json这个文件,用来表示需要的依赖。

Q3:个人的想法
有点像python的pip,有很多别人写好的第三方库,直接可以拿来调用,很方便节省开发时间,可以少写很多重复功能的代码。

Q4:针对Q1中2号文件夹中的各个文件是干什么的,chatgpt给出的分析。
当你安装vcpkg后,在vs的pws中输入vcpkg integrate install后,vcpkg 与 Visual Studio将进行全局集成,让你在 Visual Studio 中无需手动配置包含目录、库目录、链接库等信息,就能使用 vcpkg 安装的库。执行后,vcpkg 会做以下几件事:

1. ✅ 在 C:\Users\<你的用户名>\AppData\Local\vcpkg\ 中创建配置文件:

  • vcpkg.user.props(MSBuild 用于自动导入 vcpkg 库的配置)
  • vcpkg.user.targets(在链接阶段使用)
  • vcpkg.path.txt(记录当前 vcpkg 的真实位置)

2. ✅ 修改 Visual Studio 的构建行为:

对你打开的所有 VS 项目(基于 MSBuild)自动生效,无需在项目里手动设置 IncludeLib 路径。

只要:

  • 项目是基于 MSBuild 的(.vcxproj
  • 使用的 triplet(如 x64-windows)与 vcpkg 安装库一致

vcpkg 安装的库就能“无缝集成”进来。

文件/目录作用
archives第三方库源码缓存
registriesvcpkg 包信息缓存
vcpkg.user.propsVS 自动配置头文件/库路径
vcpkg.user.targetsVS 编译后期的自动配置
config全局配置项(是否开启缓存、注册表等)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇