要使用第三方库,首先须要进行安装。在没有vcpkg
之前,安装第三方库须要在本地进行编译与连接,而若是咱们是新手,则必然会遇到这样或那样难以解决的问题。但有了vcpkg
之后就不同,vcpkg
会自动的替咱们完成这一切。html
以管理员权限运行powershell,执行进行clone项目、运行批处理文件、运行集成安装命令:c++
PS C:\Users\panjie\github> git clone https://github.com/microsoft/vcpkg --depth=1 PS C:\Users\panjie\github> cd .\vcpkg\ PS C:\Users\panjie\github\vcpkg> .\bootstrap-vcpkg.bat
稍等一会,待安装成功的提示。vcpkg
应该是vc++ package manager
的简称,即vc++包管理器
,它的做用同其它的包管理器。但多是因为c++出现的比较早,因此其包管理器作的没有npm
这样的管理器那么优秀。git
使用vcpkg
安装第三方包很是简单,只须要执行vcpkg install 包的名称
便可。若是咱们不知道包的具体名称,还可使用vcpkg search 包的名称
来进行搜索,好比咱们想实现websocket
功能,则能够执行: .\vcpkg.exe search websocket
。github
PS C:\github\vcpkg> .\vcpkg.exe search websocket beast 0 HTTP/1 and WebSocket, header-only using Boost.Asio and C++11 brynet 1.11.0 A C++ header only cross platform high performance tcp network library, and sup... bsio 1.0.0 networking library, ans support HTTP/WebSocket, based on asio. cpprestsdk[websockets] Websockets support ixwebsocket 11.2.6 Lightweight WebSocket Client and Server + HTTP Client and Server ... uwebsockets 19.0.0.5 Simple, secure & standards compliant web I/O for the most demanding of applica... websocketpp 0.8.2#1 Library that implements RFC6455 The WebSocket Protocol
或者也能够打开https://vcpkg.io/en/packages.html进行搜索。web
该页面给出了包的名称,版本号,主要功能描述以及兼容性。点击View Details
还会给出安装命令。shell
好比咱们此时在windows系统中安装websocketpp
,按点击View Details
给出的提示执行:.\vcpkg install websocketpp
npm
在这里须要特别注意的是: vcpkg
默认安装的包是32
位即x86-windows
,如若咱们当前计算机是64
位的,则须要在对应的包名后面增长:x64-windows
后缀。好比此时咱们正确的命令应该是:.\vcpkg install websocketpp:x64-windows
bootstrap
若是你仅仅是为了学习,则能够尝试使用vcpkg install libzip:x64-windows
来安装一个较小的包:libzip
。若是你的操做系统是32位的,则须要移除:x64-windows
后缀。
安装过程当中的错误,大可能是因为网络缘由形成的。安装的快与慢取决于计算机的CPU编译速度,咱们要作的仅仅是耐心等待。好比安装过程当中停留在哪一个界面,则须要查看vcpkg
是否在进行数据下载(查看网络状况),或是进行编译(查看CPU占用状况),若是二者都不是,则须要咱们按下回车来帮助一下它。windows
vcpkg install
依赖于cmake
,如若当前计算机中未安装cmake
,vcpkg
将自动下载并安装。咱们所须要保证的是当前计算机的网络是畅通的。bash
安装成功后vcpkg
将提示如何在cmake
项目中配置当前包:
Elapsed time for package websocketpp::x64-windows: 10.13 s Total elapsed time: 32.09 min The package websocketpp:x64-windows provides CMake targets: find_package(websocketpp CONFIG REQUIRED) target_link_libraries(main PRIVATE websocketpp::websocketpp)
若是咱们用的是cmake
项目,则仅须要把上述两条命令复制下来,添加到CMakeLists.txt
中。
第三方包成功安装并非最终目的,咱们的最终目标是将第三方包加载到咱们的项目中。
至于项目有两类:第一类是使用visio studio开发的应用程序,该程序基于MSBuild
构建;第二类是使用其它工具开发的基于cmake
的应用程序。
若要在cmake
中使用第三方包,就须要让cmake
可以成功找到第三方包。vcpkg
使用了一种为cmake
添加参数的方法来实现这一功能。
执行vcpkg integrate install
后,将获得以下提示信息:
PS C:\Users\panjie\github\vcpkg> .\vcpkg.exe integrate install ... // 若是在cmkae项目下,添加对应的参数便可 CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/Users/panjie/github/vcpkg/scripts/buildsystems/vcpkg.cmake"
好比在存在CMakeLists.txt
的路径上执行:cmake -DCMAKE_TOOLCHAIN_FILE=C:/Users/panjie/github/vcpkg/scripts/buildsystems/vcpkg.cmake
。
同时还能够为IDE添加编译参数,这样IDE在执行编译时便会自动加入上述参数,以Clion为例:
若要在Visio Studio使用vcpkg
管理的第三方包,就须要让Visio Studio可以成功的找到第三方包。因为vcpkg
也是微软本身的东西,因此使用起来也至关方便。只要咱们使用的Visio Studio的版本大于2015,即可以使用vcpkg.exe integrate install
来将vs与vcpkg结合在一块儿。
PS C:\Users\panjie\github\vcpkg> .\vcpkg.exe integrate install Applied user-wide integration for this vcpkg root. // 全部的MSBuild c++工程可能使用#include来使用任意安装的第三方库了,言外之意在说,咱们之后在visio studio中能够直接使用#include的方式来引用第三方库 All MSBuild C++ projects can now #include any installed libraries. Linking will be handled automatically. Installing new libraries will make them instantly available. ...
须要注意的是:若是咱们在使用visio studio,则须要保障当前的VS中安装了英文的语言包。不然将获得以下警告信息:
Warning: The following VS instances are excluded because the English language pack is unavailable. C:\Program Files (x86)\Microsoft Visual Studio\2017\Community Please install the English language pack. No suitable Visual Studio instances were found
以时则须要为vs安装英文语言包,而后从新执行:vcpkg integrate install
安装包完成后,在项目中使用可使用以下命令使用第三方包了:
#include <包名/头文件名.h> 或 #include <包名/头文件名.hpp>
好比:
#include <websocketpp/config/asio_no_tls.hpp>
若是你使用的IDE提示没有找到相关头文件,则可能须要从新启动一下。
正常来说,上述的操做所有按照官方文档来的,是应该没有问题的。可是就是有可是,有些时候它就是不行。vcpkg
安装后并无使用visio studio自动找到相关的头文件。仍然提示:can not open source file "xxx.h"。
有人说那从新执行下vcpkg.exe integrate install
这个集成的命令是否是就解决了?答案是否认的,由于vcpkg.exe integrate install
命令的做用是为visio studio添加第三方依赖的功能上增长了一个指向vcpkg
的连接,也就是说只要vcpkg
安装了新的包,visio studio便会当即更新。
因此若是visio studio
没有当即更新,多数是因为咱们未安装成功形成的。
判断某个包是否安装成功的标准也很简单,咱们打开vcpkg
文件夹,找到installed
子文件夹,若是当前系统是64位的,则点击x64-windows
查看;若是是32位的,则点击x86-windows
查看。
若是有对应生成的以第三方名称命名的文件夹,则说明vcpkg
安装成功,问题应该现visio studio集成的环节。
若是没有对应相应的文件夹,则说明安装出现了问题。这个问题大可能是因为在安装时忘记添加:x64-windows
后缀形成的。
若是咱们不上心使用的vs版本小于2015,则可能须要借助NuGet