概述
vcpkg 是 Microsoft 和 C++ 社区维护的免费开放源代码 C/C++ 包管理器。 它于 2016 年推出,可帮助开发人员将项目迁移到较新版本的 Visual Studio。 vcpkg 已演变成 Windows、macOS 和 Linux 上开发人员使用的跨平台工具。 vcpkg 拥有大量开放源代码库注册表和企业就绪功能,旨在通过支持任何构建和项目系统来促进开发过程。 vcpkg 是核心的 C++ 工具,使用 CMake 中的脚本以 C++ 语言编写。 它从头开始设计,以解决 C/C++ 开发人员体验的独特难点。
官网地址:vcpkg - Open source C/C++ dependency manager from Microsoft
可以查看到支持哪些第三方库
Vcpkg 优势
相对于编译开源库的传统方法,使用 Vcpkg 的优点如下:
跨平台支持:Vcpkg 支持 Windows、Linux 和 macOS 等多个主流操作系统,使得开发者能够在不同的环境下进行一致的依赖管理。
自动解决依赖:Vcpkg 能够自动处理库之间的依赖关系,简化了依赖管理的复杂性,并且能够提供一致的库版本。
简单易用:Vcpkg 的命令行接口使得安装、更新和卸载库都变得简单快捷,节省了开发者的时间。
集成 Visual Studio:不需要设置库文件、头文件的所在目录,自动集成。
下载
源码下载地址:https://github.com/Microsoft/vcpkg
安装:
Windows系统
查看powershell版本
$PSVersionTable.PSVersion
5.1.19045.4648
powershell下载地址:Releases · PowerShell/PowerShell · GitHub
这里我下载的是7.4.3-win-x64.msi
安装前提:联网
- 先更新powershell,因为vcpkg要求powershell比较高,现在powershell为7.4.3
- git clone https://github.com/microsoft/vcpkg.git 这里我下载的是2024.05.24版本
- 使用powershell 执行window系统执行vcpkg目录下的 bootstrap-vcpkg.bat 脚本来构建vcpkg工具,会生成vcpkg.exe
表示生成成功。
- 将vcpkg所在的目录路径添加到系统的环境变量中,以便能够在任何位置调用vcpkg.
- 查看安装是否成功 vcpkg version
延伸:
安装第三方库
安装32位(默认安装)
vcpkg install [package name]
安装64位
vcpkg install [package name]:x64-windows
集成到项目中
执行命令:vcpkg integrate install
执行后就可以让 VS 可以自动访问到[vcpkg-path]/installed下以安装的库,我们不需要另外去为项目配置库环境.
在此之后,您可以创建一个非 CMake 项目 (或打开已有的项目)。在您的项目中,所有已安装的库均可立即使用 #include 包含您需使用的库的头文件且无需额外配置。
为什么执行 vcpkg integrate install 命令后,在项目中更方便地使用vcpkg安装的库?
构建系统集成:vcpkg integrate install命令会自动检测项目所使用的构建系统,如CMake、Visual Studio等,并进行相应的集成配置。它会将vcpkg的工具链路径添加到构建系统的配置中,使得构建系统能够在库搜索路径中找到vcpkg安装的库。
自动设置链接和包含路径:在执行vcpkg integrate install命令后,vcpkg会自动将库的链接路径和头文件包含路径添加到项目的构建系统配置中。这样,在构建项目时,构建系统会自动查找并链接vcpkg安装的库,同时能够正确包含库的头文件。
透明集成:一旦使用vcpkg integrate install命令将vcpkg与项目集成,开发人员就可以无需关心库的链接和包含路径的配置细节。它们可以直接在项目中使用vcpkg安装的库,就像在使用系统库一样简单。
跨平台支持:vcpkg integrate install命令能够根据不同的构建系统和操作系统进行适配,确保在跨平台开发时能够正确地设置链接和包含路径。这使得在不同平台上使用vcpkg安装的库变得更加方便和一致。
Linux系统
前提是安装了git git 安装命令 apt-get install git
- 按 Ctrl+Alt+t 打开命令终端,执行 cd ~ 切换到vcpkg安装目录
- 终端执行以下命令下载vcpkg源代码 git clone https://github.com/Microsoft/vcpkg.git ,这时下载的是main分支的。
也可以直接下载tags分支的版本(.zip文件),这样就不要用安装git了。
- 执行命令 ./bootstrap-vcpkg.sh来构建vcpkg
执行完上述命令后会报如下错误,这说明缺乏构建工具和相关依赖项
我这是麒麟桌面系统
需要执行sudo apt-get install curl zip unzip tar
- 再次执行 ./bootstrap-vcpkg.sh 命令构建生成vcpkg
表示生成vcpkg,版本为20240710
- Linux上配置vcpkg的环境变量
可能出现的问题
1.error: RPC 失败。curl 92 HTTP/2 stream 0 was not closed cleanly: CANCEL (err 8)
error: 预期仍然需要 37991 个字节的正文
解决办法:git config --global http.version HTTP/1.1
常用的vcpkg命令以及详细解释
vcpkg version:显示vcpkg的版本信息。该命令会显示当前vcpkg工具的版本号和详细信息。
vcpkg search <package>:搜索库。该命令可用于在vcpkg的库集合中搜索特定的C++库。
vcpkg install <package>:安装库。使用该命令可以安装指定的C++库。例如,vcpkg install libevent将安装libevent库。
vcpkg remove <package>:移除库。使用该命令可以移除已安装的C++库。
vcpkg update:更新库。该命令会检查并更新vcpkg的库集合,使其与官方存储库保持同步。
vcpkg upgrade:升级库。使用该命令可以升级已安装的C++库到它们的最新版本。
vcpkg list:列出已安装的库。该命令会显示所有已安装的C++库及其版本信息。
vcpkg integrate install:集成vcpkg。该命令会将vcpkg工具链与项目的构建系统进行集成,以方便在项目中使用vcpkg安装的库。
vcpkg integrate remove:移除vcpkg与构建系统的集成。该命令会将vcpkg工具链从项目的构建系统中移除,以便项目不再依赖vcpkg安装的库。
vcpkg export <package>:导出一个第三方开源库。
vcpkg help:获取帮助。该命令会显示有关vcpkg命令和使用方法的帮助信息。
vcpkg help command:获取特定命令的帮助。使用该命令可以获取对特定命令的详细使用说明和示例。
vcpkg upgrade --no-dry-run:无提示升级库。使用该命令可以在不提示的情况下直接升级已安装的C++库到最新版本。
vcpkg search --x-versions:搜索所有可用的版本。该命令会显示库的所有可用版本,以帮助开发人员选择特定版本进行安装。
vcpkg upgrade --recurse:递归升级所有依赖。使用该命令可以递归地升级项目中已安装的所有库及其依赖项。
vcpkg create <library>:创建库。该命令可用于创建自定义C++库的vcpkg端口,并将其添加到vcpkg的库集合中。
vcpkg contact:联系vcpkg团队。使用该命令可以查看vcpkg团队的联系方式。
vcpkg integrate powershell:在PowerShell中集成vcpkg。该命令将vcpkg工具链与PowerShell的构建环境进行集成。
vcpkg owns <package>:确认库的归属。使用该命令可以查看哪些库是由vcpkg安装的,哪些是由其他方式安装的。
vcpkg edit <package>:编辑库的端口文件。该命令会在默认编辑器中打开指定库的端口文件,以便进行自定义配置。
vcpkg list --x-versions:列出所有可用版本。该命令会列出所有可用版本的库及其详细信息,以帮助开发人员选择特定版本进行安装。
vcpkg cache:显示库的缓存路径。使用该命令可以查看vcpkg缓存已下载的库二进制包的位置。
vcpkg config:管理vcpkg的配置。该命令允许开发人员配置和管理vcpkg的不同选项,如设置默认的安装路径、设置C++编译器等。
vcpkg binarycache:设置二进制包缓存路径。使用该命令可以修改vcpkg的二进制包缓存路径,以便在离线环境中使用已下载的二进制包进行安装。
常安装的第三方库
安装第三方库需要从git下载源码,如果git网速不行,可以直接从git下载.zip源码包,然后放在vcpkg的downloads目录。
可以通过https://vcpkg.io/en/index.html查看到支持哪些第三方库
查看是否存在对应的版本
官网地址:vcpkg - Open source C/C++ dependency manager from Microsoft
可以查看到支持哪些第三方库
也可以使用vcpkg search <package>
指定版本安装
(默认安装32位)
vcpkg install [package name]
如指定安装64位
vcpkg install [package name]:x64-windows
要编译安装静态库,只需加上 -static 即可
如:vcpkg install spdlog:x64-windows-static
查找支持的系统架构
vcpkg help triplet
查看编译好安装的第三方库
在packages目录下有该第三方库所有的依赖库,在installed目录下有完整的该第三库的数据。