要使用第三方庫,首先須要進行安裝。在沒有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