iT邦幫忙

2026 iThome 鐵人賽

DAY 10
0
Software Development

C++ 套件管理器求生指南 Conan vs Vcpkg系列 第 10 篇

D10:Visual Studio 搭配 vcpkg 套件管理器

  • 分享至 

  • xImage
  •  

vcpkg 跟 Visual Studio 都是出自微軟,兩者自然整合的非常好。

我們今天就要來介紹怎麼使用 vcpkg 來搭配 Visual Studio (MSBuild) 來管理第三方函式庫。

今天的目標:

  1. 用 vcpkg integrate install 連接 vcpkg 與 Visual Studio
  2. 用 vcpkg 導入套件,再讓 Visual Studio 編譯
  3. 按下 F5,編譯、執行、收工

我的開發環境:

  • Windows 11 + Visual Studio 2022
  • vcpkg 2026-09-23

關於怎麼安裝,請參考D09。

步驟一:建立 Visual Studio 專案

開啟 Visual Studio,建立一個「主控台應用程式」(Console App)專案。

接著開啟命令列,進入專案根目錄,輸入以下兩個指令:

vcpkg new --application
vcpkg add port fmt nlohmann-json

此時目錄結構如下:

hello-vcpkg-msvc/
├── vcpkg.json  # <- 多了這個檔案!
├── vcpkg-configuration.json # <- 還有這個!
├── hello-vcpkg-msvc.sln
├── hello-vcpkg-msvc.vcxproj
└── hello-vcpkg-msvc.cpp

多出兩個檔案:vcpkg.json 和 vcpkg-configuration.json

步驟二:vcpkg integrate install

接下來這一步,每一台電腦只要做一次:

vcpkg integrate install

打完指令後,結果如下:

PS C:\hello-vcpkg-msvc> vcpkg integrate install
Applied user-wide integration for this vcpkg root.
CMake projects should use: "-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake"

All MSBuild C++ projects can now #include any installed libraries. Linking will be handled automatically. Installing new libraries will make them instantly available.

做完這件事之後,以後所有你創建的 MSBuild C++ 專案,都直接跟我們設定好的 vcpkg git repo 整合,可以導入並使用裡面的第三方套件。

是針對整個使用者帳號的設定,之後新開的專案都不用再做一次。

步驟三:打開 manifest 模式

integrate install 之後,專案屬性裡會多出一頁 vcpkg。

在專案上按右鍵 → 屬性 (Property) -> vcpkg:

  • 上方的「組態」選 所有組態,「平台」選 所有平台
  • Use Vcpkg Manifest 改成「是」

![[img-d10-vs-property.png]]

這一步很重要,而且很容易漏掉。vcpkg 的 MSBuild 整合預設模式是 Classic Mode。

而現代專案已經建議一律使用 Menifest Mode 。如果你沒設,之後會發現行為怎麼跟這份教學都不同。

Classic 跟 Manifest 的差別之後會專門寫一篇。

改完之後打開 .vcxproj 看,會多出一段:

<PropertyGroup Label="Vcpkg">
  <VcpkgEnableManifest>true</VcpkgEnableManifest>
</PropertyGroup>

步驟四:編譯專案並執行!

hello-vcpkg-msvc.cpp 的內容跟一樣:

#include <fmt/base.h>
#include <nlohmann/json.hpp>

int main() {
    nlohmann::json j = {
        {"name", "vcpkg"},
        {"language", "C++"},
        {"stars", 9000}
    };

    fmt::print("Hello, {}!\n", j["name"].get<std::string>());
    fmt::print("{}\n", j.dump(2));
    return 0;
}

按下 F5。

第一次建置會比較久,因為如果套件還沒有安裝過,vcpkg 會把原始碼抓下來現場編譯。

全部跑完後,就會印出預期的結果囉:

Hello, vcpkg!
{
  "language": "C++",
  "name": "vcpkg",
  "stars": 9000
}

vcpkg 在背後做了什麼

按下 F5 之後,vcpkg 在背後處理了這幾件事:

  1. 編譯套件的原始碼:Debug + Release 都有。
  2. 自動連結 .lib。 vcpkg 預設會把套件目錄裡所有的 .lib 都加進連結器的輸入(這個功能叫 AutoLink)。好處是完全不用設定,壞處是裝了什麼就連什麼,套件一多,連結器的輸入會變得很長。
  3. 複製 DLL 到工作目錄下: vcpkg 在 Windows 預設給的是 DLL,建置完成後 vcpkg 會自動把 fmt.dll 複製到 exe 旁邊。

套件裝在哪裡?

manifest 模式下套件裝在專案裡的 vcpkg_installed/ 子目錄下

vcpkg_installed/
└── x64-windows/
    └── x64-windows/
        ├── include/
        ├── lib/
        ├── bin/
        └── debug/

這個目錄是產生的,所以記得把 vcpkg_installed/ 加進 .gitignore 忽略清單裡。

小結

vcpkg 接 Visual Studio 只要簡單幾步:

  1. vcpkg new --application
  2. vcpkg add port 導入套件
  3. vcpkg integrate install:一台電腦做一次
  4. 記得去專案屬性打開 Use Vcpkg Manifest,每個專案都要做一次
  5. 之後就是按 F5 編譯專案囉!

上一篇
D09:vcpkg 套件管理第一步 Hello Vcpkg (CMake)
下一篇
D11:vcpkg 的 triplet 是什麼碗糕?
系列文
C++ 套件管理器求生指南 Conan vs Vcpkg 共 11 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言