記錄本身安裝 cpp 包管理 vcpkg 的過程git
[toc]github
0. 開發環境
1. 下載 vcpkg
2. 編譯安裝
3. 使用 vcpkg 的坑
4. 結語shell
vcpkg 項目地址:https://github.com/Microsoft/...json
因爲國內環境,不推薦直接下載(整個項目大約 80 MB),我推薦下面兩種下載方式:bootstrap
直接運行 bootstrap-vcpkg.bat (Windows)windows
將生成的 vcpkg.exe 添加到用戶 PATH 中,Windows 系統註銷後從新登陸,使 PATH 刷新安全
若是 vcpkg 在運行時崩潰,建議以 Debug 模式從新編譯安裝 vcpkg(保證使用 vs 調試時有充足的調試信息),這樣能夠在崩潰時使用 vs attach 到 vcpkg 進程進行 debug 。筆者第一次安裝時 vcpkg.exe 直接 crash,我從新編譯一遍(設置 msbuild 爲 debug 模式)後,attach 到 vcpkg.exe 後,發現拋出的異常顯示 copy pwsh.exe powershell.exe 失敗,大機率是由於 powershell 7 安裝到了 C:Program Files ,而這個文件夾下的複製操做都須要管理員權限,致使 copy 操做失敗而拋出異常。工具
筆者下載第三方庫時,發現 vcpkg 沒有識別筆者開發環境中的 git 和 cmake,而後它竟然開始下載他們……ui
打開 vcpkg 項目的下載目錄,修改 vcpkgscriptsvcpkgTools.xml 配置文件:url
(下面的配置文件爲摘選,列出的 tool 僅僅爲筆者環境中須要從新配置的項目)
<?xml version="1.0"?> <tools version="2"> <tool name="cmake" os="windows"> <version>3.15.5</version> <exeRelativePath>完整安裝目錄\cmake.exe</exeRelativePath> <url>......</url> <sha512>......</sha512> <archiveName>......</archiveName> </tool> <tool name="git" os="windows"> <version>2.14.4</version> <exeRelativePath>完整安裝目錄\git.exe</exeRelativePath> <url>......</url> <sha512>......</sha512> <archiveName>......</archiveName> </tool> <tool name="7zip" os="windows"> <version>19.0.0</version> <exeRelativePath>完整安裝目錄\7z.exe</exeRelativePath> <url>......</sha512> <archiveName>......</archiveName> </tool> <tool name="powershell-core" os="windows"> <version>7.0.3</version> <exeRelativePath>完整安裝目錄\pwsh.exe</exeRelativePath> <url>......</url> <sha512>......</sha512> <archiveName>......</archiveName> </tool> </tools>
讀者須要根據本身的配置文件,下載安裝缺失的 tool,並配置 <version> 和 <exeRelativePath>
(尤爲注意不要把 version 填錯了,否則 vcpkg 會認爲版本不對而從新下載對應 version 的版本)
筆者在安裝 powershell 7 後,將其安裝在C:\Program Files
下。根據上文 2. 中所述,最終發現 vcpkg.exe 竟然執行了 copy 操做,進一步致使拋出異常。筆者最後修改了 powershell7 安裝目錄的
屬性
和安全選項卡
容許對目錄和目錄下文件的寫操做,解決了這個問題。讀者也能夠將其安裝到其餘目錄下以提早解決這個問題(windows diss!)
筆者使用 vs 來開發 cmake 項目。
因爲使用 vcpkg 配合 cmake,須要設置 CMAKE_TOOLCHAIN_FILE
和 VCPKG_TARGET_TRIPLET
,因此筆者使用 CMakeSettings.json 配置文件(點擊 vs 的菜單欄 > CMake > 更改CMake設置),添加 「variables」 項目,並在 「variables」 中添加兩項:
{ "configurations": [ { "variables": [ { "name": "CMAKE_TOOLCHAIN_FILE", "value": "vcpkg完整安裝目錄\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake" }, { "name": "VCPKG_TARGET_TRIPLET", "value": "編譯目標x64-windows-static" } ] } ] }
find_package()
找不到第三方包問題筆者環境下,這個問題是由於 vs 集成的 cmake 工具版本過低。
筆者將其餘版本的 cmake 安裝目錄直接覆蓋了 vs 內建的 cmake 目錄(D:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake
),注意覆蓋的不是 CMake/bin/cmake.exe,而是 CMake 整個目錄