https://blog.csdn.net/lizhichao410/article/details/132339064
背景
Windows 下开发 C/C++ 程序,少不了编译开源的第三方库,使用这些库开发极大的方便了程序员,使得我们不必重复造轮子。
由于开源库绝大部分都来源于 Linux 系统、将其移植到 Windows 的 VC 开发环境下编译比较复杂和麻烦;而且我们还需要考虑编译出哪种类型的开源库程序,比如:Debug/Release、动态库/静态库、MD/MT、32位/64位,管理起来也很麻烦。
Vcpkg
概述
Vcpkg 是微软社区开发的一个跨平台的 C++ 包管理工具。它旨在解决 C++ 开发过程中依赖管理的痛点,它支持多个操作系统,包括:Windows、Linux和 macOS,使开发者能够更加便捷地安装、管理和更新 C++ 项目所需的第三方库。
Vcpkg 优势
相对于编译开源库的传统方法,使用 Vcpkg 的优点如下:
跨平台支持:Vcpkg 支持 Windows、Linux 和 macOS 等多个主流操作系统,使得开发者能够在不同的环境下进行一致的依赖管理。
自动解决依赖:Vcpkg 能够自动处理库之间的依赖关系,简化了依赖管理的复杂性,并且能够提供一致的库版本。
简单易用:Vcpkg 的命令行接口使得安装、更新和卸载库都变得简单快捷,节省了开发者的时间。
集成 Visual Studio:不需要设置库文件、头文件的所在目录,自动集成。
Vckpg 下载和安装
概述
Vcpkg 大量使用 psl 脚本,所以官方强烈推荐使用 PowerShell 而不是 CMD 命令行来执行各种操作,建议使用 7 以上版本。
安装 Vcpkg
创建安装目录
先创建一个安装目录,如:C:\vcpkg,然后打开该目录:
cd C:/vcpkg
1
clone 官方 git 仓库
git clone https://github.com/microsoft/vcpkg
1
编译 vcpkg
切换目录到 vcpkg 仓库文件夹:
cd vcpkg
1
执行引导脚本:
./bootstrap-vcpkg.bat
1
成功执行完成后,在目录中可以看到文件 vcpkg.exe:
添加环境变量
将 vcpkg.exe 的路径添加到环境变量,即可在任意位置执行 vcpkg 命令:
更新 Vcpkg
概述
vcpkg 包管理器在 GitHub 上定期更新。 若要将 vcpkg 的克隆更新到最新版本,执行 git pull 命令即可。
更新下载完成后,再次运行引导程序会重新生成 vcpkg 程序,但保留已安装的库。
git pull
进入 vcpkg目录,然后执行 git pull 命令:
git pull
1
再次执行引导脚本:
./bootstrap-vcpkg.bat
1
Vcpkg 使用
安装一个开源库
这里以安装 spdlog 库为例进行演示。安装第三方开源库的命令为 vcpkg install pkgname。
默认安装
如果不指定安装的架构,vcpkg 默认把开源库编译成 x86 的 Windows 版本的库:
vcpkg install spdlog
1
执行结果如下:
编译完成后可以在目录中看到库的位置:
指定位数安装
如果要安装编译某一个架构的开源库,我们只需要在需要安装的包后面指定相应的 triplet 即可。例如要编译 64 位 Windows 版本的 spdlog,执行如下命令:
vcpkg install spdlog:x64-windows
1
命令执行完成后可以在目录中查看新编译的库:
同样,若要编译安装静态库,只需加上 -static 即可:
vcpkg install spdlog:x64-windows-static
1
删除一个开源库
要删除一个已安装的开源库的命令为:vcpkg remove pkgname:
vcpkg remove spdlog:x64-windows
1
执行库删除命令后,其源码包和解压缩的源码并没有删除,若再次安装直接进行编译步骤:
更新一个开源库
列出需要更新的库
可以使用 update 或者 upgrade 命令列出需要更新的库:
vcpkg update
1
也可以使用 upgrade 命令:
vcpkg upgrade
1
更新过时的库
不带参数使用 upgrade 命令时将一次升级所有过时的库。但默认情况下 upgrade 命令只列出要升级的库,但不升级它们。
要有效地升级它们,应该使用 -no-dry-run 选项:
vcpkg upgrade --no-dry-run
1
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lizhichao410/article/details/132339064