vcpkg:使用 vcpkg
命令
查看Vcpkg支持的開源庫列表
查看Vcpkg支持的開源庫列表 .\vcpkg\vcpkg search安裝一個開源庫
這里的“安裝”其實是指下載和編譯。
比如我們需要安裝常用的jsoncpp庫,那么執行命令
.\vcpkg\vcpkg install jsoncpp輸出
Computing installation plan... A suitable version of cmake was not found (required v3.19.2). Downloading portable cmake v3.19.2... Extracting cmake... A suitable version of 7zip was not found (required v18.1.0). Downloading portable 7zip v18.1.0... Extracting 7zip... A suitable version of nuget was not found (required v5.5.1). Downloading portable nuget v5.5.1... Downloading nuget...https://dist.nuget.org/win-x86-commandline/v5.5.1/nuget.exe -> C:\Users\oceanstar\vcpkg\win\vcpkg\downloads\22ea847d-nuget.exeC:\Users\oceanstar\vcpkg\win>.\vcpkg\vcpkg install jsoncpp Computing installation plan... A suitable version of cmake was not found (required v3.19.2). Downloading portable cmake v3.19.2... Extracting cmake... A suitable version of 7zip was not found (required v18.1.0). Downloading portable 7zip v18.1.0... Extracting 7zip... A suitable version of nuget was not found (required v5.5.1). Downloading portable nuget v5.5.1... The following packages will be built and installed:jsoncpp[core]:x86-windows -> 1.9.4 Detecting compiler hash for triplet x86-windows... A suitable version of powershell-core was not found (required v7.1.0). Downloading portable powershell-core v7.1.0... Downloading powershell-core...https://github.com/PowerShell/PowerShell/releases/download/v7.1.0/PowerShell-7.1.0-win-x86.zip -> C:\Users\oceanstar\vcpkg\win\vcpkg\downloads\PowerShell-7.1.0-win-x86.zipC:\Users\oceanstar\vcpkg\win>.\vcpkg\vcpkg install jsoncpp Computing installation plan... The following packages will be built and installed:jsoncpp[core]:x86-windows -> 1.9.4 Detecting compiler hash for triplet x86-windows... A suitable version of powershell-core was not found (required v7.1.0). Downloading portable powershell-core v7.1.0... Extracting powershell-core... Could not locate cached archive: C:\Users\oceanstar\AppData\Local\vcpkg\archives\ca\ca86469a9ddb0e4cd2f352ca94cbfdc3993b0b17.zip Starting package 1/1: jsoncpp:x86-windows Building package jsoncpp[core]:x86-windows... -- Downloading https://github.com/open-source-parsers/jsoncpp/archive/9059f5cad030ba11d37818847443a53918c327b1.tar.gz -> open-source-parsers-jsoncpp-9059f5cad030ba11d37818847443a53918c327b1.tar.gz... -- Extracting source C:/Users/oceanstar/vcpkg/win/vcpkg/downloads/open-source-parsers-jsoncpp-9059f5cad030ba11d37818847443a53918c327b1.tar.gz -- Using source at C:/Users/oceanstar/vcpkg/win/vcpkg/buildtrees/jsoncpp/src/3918c327b1-034a82149a.clean -- Configuring x86-windows -- Building x86-windows-dbg -- Building x86-windows-rel -- Installing: C:/Users/oceanstar/vcpkg/win/vcpkg/packages/jsoncpp_x86-windows/share/jsoncpp/copyright -- Performing post-build validation -- Performing post-build validation done Stored binary cache: C:\Users\oceanstar\AppData\Local\vcpkg\archives\ca\ca86469a9ddb0e4cd2f352ca94cbfdc3993b0b17.zip Building package jsoncpp[core]:x86-windows... done Installing package jsoncpp[core]:x86-windows... Installing package jsoncpp[core]:x86-windows... done Elapsed time for package jsoncpp:x86-windows: 53.86 sTotal elapsed time: 1.654 minThe package jsoncpp:x86-windows provides CMake targets:find_package(jsoncpp CONFIG REQUIRED)target_link_libraries(main PRIVATE jsoncpp_lib jsoncpp_object)我們大致可以了解到install會經歷這幾個過程:
- 環境初始化
- 下載源代碼(如果已經在cache中,則不下載)
- 校驗文件有效性
- 解壓縮源代碼
- 利用配套工具配置源碼工程,在這里是使用的是cmake(如果是ffmpeg,則用msys2)
- 編譯源碼。一般會同時編譯Release和Debug版本。
- 把編譯好的文件拷貝到相關目錄中去(一般是installed目錄)
指定編譯某種架構的程序庫
如果不指定安裝的架構,vcpkg默認把開源庫編譯成x86的Windows版本的庫。那vcpkg總共支持多少種架構呢?我們可以使用如下命令便知:
.\vcpkg.exe help tripletvcpkg支持眾多架構,有arm-uwp, arm-windows, arm64-uwp, arm64-windows, x64-linux, x64-osx, x64-uwp, x64-windows, x64-windows-static, x86-uwp, x86-windows, x86-windows-static。
那如果要安裝編譯某一個架構的開源庫,我們該怎么寫呢?我們只需要在需要安裝的包后面指定相應的triplet即可。例如我們需要編譯64位版本的jsoncpp,那么執行如下命令即可。
.\vcpkg.exe install jsoncpp:x64-windows移除一個已經安裝(編譯)的開源庫
如果移除一個已經安裝的開源庫,那么執行remove指令即可。比如我們要移除jsoncpp,那么執行命令:
.\vcpkg.exe remove jsoncpp注意:
- 這個時候只是移除了默認的x86-winodws版本的文件,如果有其他平臺的版本需要移除,需要制定相應的triplet。
- 移除也只是移除了二進制程序庫而已,源碼包和解壓縮的源碼并沒有刪除。
如果想要一鍵移除“過時”的包,執行命令:
.\vcpkg.exe remove --outdated已安裝的包更新
一般有兩種更新方式。一個是update指令,可以顯示可以升級的開源庫的列表。另一個是upgrade的指令,會重新編譯所有需要更新的包。
C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg upgrade導出已經安裝的開源庫
有的時候,一個項目組中有很多人,不需要每個人都參與編譯。一個人編譯好所有開源庫后到處給別人即可。有的時候也是出于備份的目的,也會導出已經安裝的開源庫。導出可以執行export指令。例如,我要導出jsoncpp庫,那么執行:
.\vcpkg.exe export jsoncpp --7zip注意,導出時必須指定導出的包格式。vcpkg支持5種導出包格式,有:
一般地,導出包的格式為:vcpkg-export-<日期>-<時間>
默認情況下只會導出x86-windows的包,如果要導出所有包,那需要制定相應的triplet。比如,如果同時導出x86和x64版本的jsoncpp,那執行命令:
.\vcpkg.exe export jsoncpp jsoncpp:x64-windows --7zip這個命令等價于:
.\vcpkg.exe export jsoncpp:x86-windows jsoncpp:x64-windows --7zip如果要指定輸出目錄和特定文件名,需使用"–output="參數
導入備份的開源庫
.\vcpkg.exe import xxx.7z解決vcpkg下載緩慢
第一步:去vcpkg里把下載鏈接復制出來,Downing后面的就是我們的下載鏈接
第二步:在外面用瀏覽器或別的下載工具下載這個文件
第三步:我們進去\vcpkg\downloads\temp這個文件夾中看看vcpkg對這個文件的命名是什么
第四步:將我們的文件也命名成這個,直接復制粘貼即可,然后放到\vcpkg\downloads\這個文件夾里
第五步:直接點擊右上角關閉按鈕關閉vcpkg,重新打開,重新輸入install命令即可,可以看到vcpkg已經采用了我們自己下好的包而不是它重新下一個了,這里利用的是vcpkg的緩存機制
# 搜索想要安裝的包 C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg search libssh2 curl[ssh] SSH support via libssh2 libgit2[ssh] SSH support via libssh2 libssh2 1.9.0 The SSH libraryIf your library is not listed, please open an issue at and/or consider making a pull request:https://github.com/Microsoft/vcpkg/issues# 安裝指定的包,curl包分號后面的表示架構 C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg install libssh2:x64-windows# 列出已經安裝的包 C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg list# 已安裝的包更新 C:\Users\oceanstar\vcpkg\win\vcpkg》 vcpkg upgrade# 刪除已安裝的包 C:\Users\oceanstar\vcpkg\win\vcpkg》 **vcpkg remove libssh2:x64-windowsVcpkg和Visual Studio的集成
上面我們已經安裝了一些第三方庫,那如何使用呢?常規情況下,我們需要設置include目錄、lib目錄等,會有很多工作量。Vcpkg提供了一套機制,可以全自動的適配目錄,而開發者不需要關心已安裝的庫的目錄在哪里,也不需要設置。這是Vcpkg的一大優勢。
集成到全局
“集成到全局”適用于Visual Studio開發環境和msbuild命令行。執行命令:
\win\vcpkg> .\vcpkg integrate install Applied user-wide integration for this vcpkg root.All MSBuild C++ projects can now #include any installed libraries. Linking will be handled automatically. Installing new libraries will make them instantly available.CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/Users/oceanstar/vcpkg/win/vcpkg/scripts/buildsystems/vcpkg.cmake"當出現“Applied user-wide integration for this vcpkg root.”字樣的時候,說明已經集成成功。這時候可以在任意的工程中使用安裝好的第三方庫。
移除全局集成
.\vcpkg integrate remove集成到工程
上面已經可以集成到全局,為什么還要“集成到工程”呢?因為在大部分情況下,我們不希望集成到全局,畢竟有很多第三方庫我們希望自定義處理一下,或者干脆不想集成第三方庫。那么集成到工程是最靈活的處理方式。也是工程級項目推薦的處理方式。
“集成到工程”是整個vcpkg中最復雜的一項,它需要利用Visual Studio 中的nuget插件來實現。我們接下來一步一步來說。
生成配置
.\vcpkg integrate project這時候會在<vcpkg_dir>\scripts\buildsystems目錄下,生成nuget配置文件.
其中<vcpkg_dir>是指vcpkg實際所在目錄。
基本配置
總結
以上是生活随笔為你收集整理的vcpkg:使用 vcpkg的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu12.04安装出现系统内部错
- 下一篇: 如何制作音乐界面动效设计