cpp 包管理 vcpkg 安裝記錄

記錄本身安裝 cpp 包管理 vcpkg 的過程git

[toc]github

0. 開發環境
1. 下載 vcpkg
2. 編譯安裝
3. 使用 vcpkg 的坑
4. 結語shell

0. 開發環境

  • 操做系統 Windows10
  • 編譯環境 visual studio 2017(雖然筆者使用 vs 開發,可是項目構建採用 vs 內建的 cmake)

1.下載 vcpkg

vcpkg 項目地址:https://github.com/Microsoft/...json

因爲國內環境,不推薦直接下載(整個項目大約 80 MB),我推薦下面兩種下載方式:bootstrap

  1. 使用 Gitee 下載,Gitee 上有一個 vcpkg 加速下載的項目
  2. 使用 https://gitclone.com/github.c... 下載,下載原理參見 Github下載速度慢 提高github下載速度最新解決方案 跟龜速說拜拜(持續更新 保證方案可行 建議收藏)

2. 編譯安裝

直接運行 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 操做失敗而拋出異常。工具

3. 使用 vcpkg 的坑

3.1 vcpkg install xxx

筆者下載第三方庫時,發現 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!)

3.2 visual studio cmake

筆者使用 vs 來開發 cmake 項目。

  • 配置 vs cmake 項目

因爲使用 vcpkg 配合 cmake,須要設置 CMAKE_TOOLCHAIN_FILEVCPKG_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 整個目錄

4. 結語

  • 環境配置花了一夜 + 一上午的時間……
  • 若是 vcpkg.exe 運行時直接 crash,請利用 2. 介紹的方法自行 debug
  • 若是 vcpkg 在安裝某個第三方包時失敗,請仔細查看 error 信息(筆者常常發現是 cmake 或 git 的緣由,嘗試從新安裝高版本就能夠了)
  • vcpkg 國內下載速度很慢,大多時候筆者都是本身手動下載壓縮文件,而後交給 vcpkg 管理(具體細節請自行搜索,很是簡單^_^)
相關文章
相關標籤/搜索