win系统,如何安装使用cpp项目的vcpkg包管理工具?
发布于 作者:苏南大叔 来源:程序如此灵动~
是的,cpp项目也有包管理工具,叫做vcpkg。使用vcpkg就可以很方便的管理c和cpp的知名第三方包了。所以,苏南大叔在前些篇文章里面,处理spdlog/nng/magic_enum等第三方包的时候,虽然管用也解决了问题,但是不免显得有些不专业了。

苏南大叔的“程序如此灵动”博客,记录苏南大叔的编程经验总结。本文测试环境:win10,vcpkg@2023.11.20,vs2019。vcpkg的下载安装部分是非常奇怪的,非常的不走寻常路,脑回路不是一般的清奇,处处透露着一种诡异。
下载vcpkg源码
官方github地址是:
【途径一】网上教程都是说要去git clone它的仓库,苏南大叔觉得不是太稳妥。毕竟master分支可不是release。在以往的经验中,master分支出现各种问题的情况,也不少见,所以大家自行选择分支。
git clone https://github.com/microsoft/vcpkg.git【途径二】或者来这边找个最新的release的source.zip下载:
看地址,既然是微软维护的,那为啥不直接集成在visual studio里面呢?拿到的源码结构如下:

下载vcpkg.exe
是的,没看错。这一步是下载vcpkg.exe,这个vcpkg.exe还不是上面源码编译得到的,是执行上面源码下的bootstrap-vcpkg.bat文件,然后【下载得到的】(对,并不是编译)。
提示类似如下:
Downloading https://github.com/microsoft/vcpkg-tool/releases/download/2023-12-12/vcpkg.exe -> D:\downloads\vcpkg-2023.12.12\vcpkg.exe...
可以注意到:这里提及了另外一个microsoft/vcpkg-tool的地址,以后可以去研究一下。
如果网络不好,这个文件还贴心的告诉你可以直接浏览器下载也可以,建议直接迅雷。
注意:得到的vcpkg.exe要放在上面源码的根目录下面,不可以单独放在别的地方。无法单独使用!!!
win系统识别vcpkg
vcpkg的系统识别,要设置两个系统变量。第一个就是:系统变量里面的path。这比较好理解,为了方便在任意地方调用而设置的。

vcpkg识别将来类库的目录【非必须】
第二个变量名是:VCPKG_ROOT,值是:<下载到的源码加exe的最终存放目录>。它的存在主要是为了指出存放vcpkg下载各种类库的地方。
默认路径就挺好,不用设置新的值。
vstudio识别vcpkg
依然还差一步,系统识别出vcpkg之后,还需要visual studio识别出vcpkg。以便对cpp项目进行编译的时候,能够直接识别出来类库。
话说为啥人家python下的pip就不用这样一步?
vckpg integrate install这个命令在哪里执行都可以。执行完,会有提示“All MSBuild C++ projects can now $include any installed libraries.”,以后的cpp项目,就可以直接使用相关的第三方库了。
执行之后,visual studio的项目配置对话框里面,就会出现一个vcpkg的设置。并且"附加包含目录"里面也会自动出现vcpkg的include目录。

vcpkg查找第三方库
下面以第三方库lame为例,使用时注意替换相关名词。
vcpkg search lame
vcpkg安装第三方库
vcpkg安装一个第三方库,那可是相当的麻烦。因为在前边文章里面也说过了:类库的arch分为win32和x64的,并且还分为static和shared。所以,每个下载的第三方库,就必须带上这些区分点。
其它编程语言的包管理工具并没有这么复杂
比如,这里还是以安装lame【实际名称mp3lame】为例:
vcpkg install mp3lame:x86-windows-static当然这些后缀也不是任意组合的,是在一定范围内进行组合的。组合错了,会有错误提示的。
首次安装加速
苏南大叔理解着:它这个是下载源码,然后在本地进行编译。所以,第一次安装的时候,会比较麻烦。会有很多下载动作。所以,这个过程中,会提示安装各种工具压缩包。如果加速下载的话,可以迅雷下载压缩包,然后放在<vcpkg>/downloads/目录下面。再次执行vcpkg install命令,这个动作就会被加快。

安装到了哪里
现场编译安装完的库源码,可以来这里查看:


vcpkg移除第三方库
中文使用的是【移除】,所以英文是【remove】,并不是【uninstall】。
vcpkg remove mp3lame:x86-windows-static不知道都安装了什么版本,也没有问题。可以故意写错,下面有智能提示的。

相关链接
结语
更多cpp相关文章,请点击苏南大叔的博客: