vcpkg+vs2019

背景

这篇文章中,我费尽心机的在VS2013上集成libconfig库,虽然最终终于在各种机缘巧合之下成功了,但是仍然花费了我小半天的时间。在查找资料的过程中,我发现了一款C++安装第三方库的神器。
\color{red}{vcpkg}
有了这款神器,安装C++的库就和安装Python的库一样,只需要vcpkg.exe install XXX就可以安装完毕。

准备

vcpkg支持的开发环境有VS2015,VS2017,VS2019。在大多数情况下也支持vs2013。但是官方并没有支持VS2013,只是刚刚好可以用而已。为了一劳永逸,最大限度的降低C++库安装的频率,我选择VS2019+vcpkg。
所以需要VS2019下载器和vcpkg源代码。
先安装VS2019再编译vcpkg。

安装VS2019

从这个网站下载VS2019社区版。推荐社区版,对于个人用户而言,社区版已经满足了过量需求而且免费,不需要破解。(想想VS2013破解了之后用的功能还是调试、单步执行、端点。。。高级功能一个都用不上)下载正版的好处还有可以登录账号,VS2019的网络功能及其强大,可以连接你的Github账户、将代码保存到云空间从而做到不同地点同步等等。
安装过程可以看这篇文章
\color{red}{mark一下,windows7安装VS2019的时候如果选择了linux组件的话,会卡死。不知道windows10有什么问题}
应该不是网络的问题,在我即使科学上网,也无法安装完成,但是取消Linux组件之后,就可以完美运行。知道的小伙伴了可以评论区告诉我原因。

安装vcpkg

在Github上下载vcpkg。
下载完成之后运行.bat文件,即可完成编译,在当前目录下生成vcpkg.exe文件。

.bat .exe文件

使用vcpkg

参考https://blog.csdn.net/cjmqas/article/details/79282847

  1. 查看Vcpkg支持的开源库列表
    执行命令
    .\vcpkg.exe search
    结合findstr命令,可以看vcpkg是否可以安装我们想要的库。查找是否有opencv的命令如下。
    vcpkg.exe search | findstr opencv
  2. 安装一个开源库
    这里的“安装”其实是指下载和编译。
    比如我们需要安装常用的jsoncpp库,那么执行命令
    .\vcpkg.exe install jsoncpp
  3. Vcpkg和Visual Studio的集成
    上面我们已经安装了一些第三方库,那如何使用呢?常规情况下,我们需要设置include目录、lib目录等,会有很多工作量。Vcpkg提供了一套机制,可以全自动的适配目录,而开发者不需要关心已安装的库的目录在哪里,也不需要设置。这是Vcpkg的一大优势。
    3.1. 集成到全局
    “集成到全局”适用于Visual Studio开发环境和msbuild命令行。执行命令:
    .\vcpkg.exe integrate install
    当出现“Applied user-wide integration for this vcpkg root.”字样的时候,说明已经集成成功。这时候可以在任意的工程中使用安装好的第三方库。
    3.2. 移除全局集成
    移除全局集成只要执行下列命令即可:
    .\vcpkg.exe integrate remove
  4. 集成静态库
    根据我的测试,VS2019不可以使用一下方法。
    不过还是有其他奇技淫巧的。
    Vcpkg默认编译链接的是动态库,如果要链接静态库,目前还没有简便的方法。需要做如下操作
    用文本方式打开vcxproj工程文件
    在xml的段里面增加如下两句话即可
<VcpkgTriplet>x86-windows-static</VcpkgTriplet>
<VcpkgEnabled>true</VcpkgEnabled>

在CMake中集成静态库,需要额外指令
cmake .. -DCMAKE_TOOLCHAIN_FILE=.../vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x86-windows-static

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注:首发地址 1. 前言 当在做 Android NDK 开发时,如果不熟悉用 CMake 来构建,读不懂 CMa...
    cfanr阅读 24,682评论 1 53
  • 命令简介 cmd是command的缩写.即命令行 。 虽然随着计算机产业的发展,Windows 操作系统的应用越来...
    Littleston阅读 8,588评论 0 12
  • 一、命令行 1. calc-----------启动计算器 2.certmgr.msc----证书管理实用程序 3...
    小小辛_c阅读 3,978评论 0 2
  • Qt是属于一个跨平台的GUI开发软件,支持的平台有Unix、Linux、Windows/WinCE、IOS等。 Q...
    一叶之界阅读 12,548评论 0 17
  • 转载自我的博客:CMake 简介和 CMake 模板。 如果你用 Linux 操作系统,使用 cmake 会简单很...
    district10阅读 13,957评论 3 27