C/C++使用vcpkg管理跨平臺包的最佳實踐
1. vcpkg 簡介
1.1 什么是 vcpkg?
vcpkg 是微軟開源的一款 C/C++ 包管理器,旨在簡化第三方庫的獲取與構(gòu)建過程。它支持 Linux、Windows 和 macOS 三大平臺,能夠與 CMake、MSBuild 等主流構(gòu)建系統(tǒng)無縫集成。
vcpkg 的設(shè)計哲學(xué)是"源碼構(gòu)建 + 本地緩存"——庫的源代碼下載后在本機編譯,生成的二進(jìn)制文件緩存在本地,供后續(xù)復(fù)用。
vcpkg 的主要特性:
| 特性 | 說明 |
|---|---|
| 跨平臺 | 同一套工作流覆蓋 Linux / Windows / macOS |
| 源碼構(gòu)建 | 支持自定義編譯選項(如靜態(tài)/動態(tài)鏈接、debug/release) |
| 版本管理 | 支持版本鎖定、基線(baseline)與覆蓋(overlay) |
| 龐大生態(tài) | 內(nèi)置超過 2500+ 開源庫,持續(xù)更新 |
| 構(gòu)建系統(tǒng)集成 | 內(nèi)建 CMake 工具鏈文件,也支持 MSBuild 直接引用 |
| 三重支持 | x86 / x64 / arm(含 arm64)多架構(gòu) |
1.2 為什么選擇 vcpkg?
| 對比維度 | 手動管理 | vcpkg |
|---|---|---|
| 庫下載 | 需自行尋找源碼包、確認(rèn)版本 | 一行命令自動下載 |
| 編譯配置 | 手動配置編譯選項、解決依賴鏈 | 自動處理依賴關(guān)系 |
| 項目集成 | 手動配置 include/lib 路徑 | 工具鏈文件自動注入 |
| 版本鎖定 | 依賴系統(tǒng)包管理器版本 | baseline + versioning 精確控制 |
| 團隊協(xié)作 | 每人需重復(fù)部署環(huán)境 | vcpkg.json 聲明依賴,一鍵還原 |
2. 安裝 vcpkg
2.1 前置條件
Windows
| 依賴項 | 說明 | 驗證命令 |
|---|---|---|
| Git | 克隆 vcpkg 倉庫 | git --version |
| Visual Studio | 2019/2022(含"使用 C++ 的桌面開發(fā)"工作負(fù)載) | cl 或 Visual Studio Installer 確認(rèn) |
| Windows SDK | 隨 VS 安裝或單獨安裝 | — |
| CMake(可選) | vcpkg 自身不強制,但項目推薦 | cmake --version |
提示:如果使用 Visual Studio Code,建議安裝 CMake Tools 和 vcpkg 擴展。
Linux (Ubuntu/Debian)
# 安裝編譯工具鏈 sudo apt update sudo apt install -y git curl zip unzip tar pkg-config # 安裝 C/C++ 編譯器 sudo apt install -y build-essential # 安裝 CMake sudo apt install -y cmake
驗證命令: $ git --version $ g++ --version $ cmake --version
對于其他 Linux 發(fā)行版(Fedora、Arch 等),請使用對應(yīng)的包管理器安裝 gcc / g++、cmake 和 make。
2.2 克隆與引導(dǎo)安裝
以下步驟在 Linux 和 Windows 上完全一致:
# 1. 克隆 vcpkg 倉庫(建議放在用戶目錄下),如果克隆速度慢可以直接從github上面下載壓縮包解壓 git clone https://github.com/microsoft/vcpkg.git ~/vcpkg # 2. 執(zhí)行引導(dǎo)腳本——編譯 vcpkg 自身 # Linux/macOS ~/vcpkg/bootstrap-vcpkg.sh # Windows (PowerShell) ~/vcpkg/bootstrap-vcpkg.ps1 # 或 cmd %USERPROFILE%\vcpkg\bootstrap-vcpkg.bat
注意:Windows 下需要以管理員權(quán)限運行 PowerShell 時,部分操作可能需要;但日常使用無需管理員。
為了在任何終端中直接使用 vcpkg 命令,建議將 vcpkg 目錄加入 PATH:
Linux
# 編輯 shell 配置文件(以 bash 為例) echo 'export PATH="$HOME/vcpkg:$PATH"' >> ~/.bashrc source ~/.bashrc
Windows
方式一:通過 PowerShell Profile(推薦)
# 1. 查看當(dāng)前 PowerShell Profile 文件路徑 $PROFILE # 2. 如果文件不存在,創(chuàng)建它 New-Item -Path $PROFILE -Type File -Force # 3. 用記事本打開編輯 notepad $PROFILE
在打開的 Profile 文件中添加以下內(nèi)容:
# 添加 vcpkg 到 PATH $env:Path += ";$env:USERPROFILE\vcpkg" # 可選:設(shè)置 vcpkg 默認(rèn)三重(以 Windows 靜態(tài)鏈接為例) $env:VCPKG_DEFAULT_TRIPLET = "x64-windows"
保存后,重新加載配置:
. $PROFILE
方式二:通過系統(tǒng)環(huán)境變量
通過系統(tǒng)設(shè)置 → 環(huán)境變量 → 編輯 PATH,添加 vcpkg 目錄。

驗證安裝:
vcpkg version

3. 包管理——搜索、安裝與卸載
3.1 搜索可用包
# 按名稱搜索 vcpkg search fmt # 搜索特定關(guān)鍵字(如 json 解析庫) vcpkg search json

3.2 安裝包
基礎(chǔ)用法
# 安裝默認(rèn)三重(triplet)的包 vcpkg install fmt
指定三重(triplet)
三重用于指定目標(biāo)平臺和架構(gòu):
| 三重(Triplet) | 說明 |
|---|---|
x64-windows | Windows x64 動態(tài)鏈接(默認(rèn)) |
x86-windows | Windows x86 動態(tài)鏈接 |
x64-windows-static | Windows x64 靜態(tài)鏈接 |
x64-windows-static-md | Windows x64 靜態(tài)鏈接(/MD 運行時) |
x64-linux | Linux x64 動態(tài)鏈接(默認(rèn)) |
x64-linux-static | Linux x64 靜態(tài)鏈接 |
arm64-windows | Windows ARM64 動態(tài)鏈接 |
arm64-linux | Linux ARM64 動態(tài)鏈接 |
x64-osx | macOS x64 |
arm64-osx | macOS Apple Silicon |
安裝示例:
# Windows 靜態(tài)鏈接 vcpkg install fmt:x64-windows-static # Linux 靜態(tài)鏈接 vcpkg install fmt:x64-linux-static # 安裝多個包 vcpkg install fmt spdlog jsoncpp
安裝過程詳解
安裝時 vcpkg 會:
- 下載 包的源代碼(包含依賴鏈)
- 編譯 源碼生成二進(jìn)制文件
- 安裝 生成的庫文件和頭文件到 vcpkg 的
packages/目錄 - 注冊 到 vcpkg 的數(shù)據(jù)庫中
3.3 列出與卸載已安裝包
# 列出所有已安裝包 vcpkg list # 卸載指定包 vcpkg remove fmt # 卸載并清理依賴(不清理其他包所需的依賴) vcpkg remove --recurse fmt
3.4 查看包詳情
# 查看包的詳細(xì)信息和可用特征(features) vcpkg search fmt # 更詳細(xì)的包信息 vcpkg depend-info fmt

4. 集成到項目
vcpkg 提供了多種集成方式,最推薦的是 CMake 工具鏈文件 方式。
4.1 CMake 集成(推薦)
方式一:全局集成(一次性)
# 使 vcpkg 對系統(tǒng)上所有 CMake 項目可見 vcpkg integrate install
這會在 CMake 中自動加入 CMAKE_TOOLCHAIN_FILE 設(shè)置。之后 CMake 項目只需在 CMakeLists.txt 中通過 find_package 使用即可:
cmake_minimum_required(VERSION 3.16) project(MyProject LANGUAGES CXX) # vcpkg 會自動注入 CMAKE_TOOLCHAIN_FILE # 因此可以直接 find_package find_package(fmt REQUIRED) add_executable(my_app main.cpp) target_link_libraries(my_app PRIVATE fmt::fmt)
方式二:項目級集成(推薦,可復(fù)現(xiàn))
在項目中創(chuàng)建 CMakePresets.json 或通過命令行顯式指定:
# Linux
cmake -B build -S . \
-DCMAKE_TOOLCHAIN_FILE=~/vcpkg/scripts/buildsystems/vcpkg.cmake
# Windows (PowerShell)
cmake -B build -S . `
-DCMAKE_TOOLCHAIN_FILE=$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake
或在 CMakeLists.txt 開頭設(shè)置:
# 指定 vcpkg 工具鏈文件(不建議提交到版本控制)
set(CMAKE_TOOLCHAIN_FILE "$ENV{HOME}/vcpkg/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "vcpkg toolchain file")
方式三:manifest 模式(強烈推薦)
manifest 模式通過項目中的 vcpkg.json 聲明依賴,使環(huán)境可復(fù)現(xiàn):
{
"name": "my-project",
"version": "1.0.0",
"dependencies": [
"fmt",
"spdlog",
"jsoncpp"
]
}然后通過 vcpkg install 安裝依賴:
# 在項目根目錄運行(自動讀取 vcpkg.json) vcpkg install
結(jié)合 CMake 使用時,CMake 會自動識別項目根目錄的 vcpkg.json 并安裝依賴:
# CMakeLists.txt - 無需顯式 find_package 所有依賴 # 如果啟用了 manifest 模式,vcpkg 會自動設(shè)置 add_executable(my_app main.cpp) # 通過 vcpkg 的 cmake 集成自動鏈接
4.2 MSBuild 集成(Windows / Visual Studio)
# 全局 MSBuild 集成 vcpkg integrate install
這會將 vcpkg 的頭文件路徑和庫路徑自動注入到 Visual Studio 項目中。之后在 VS 中直接 #include 并使用即可。
如果要移除全局集成:
vcpkg integrate remove
4.3 跨平臺項目示例
以下是一個完整的跨平臺 C++ 項目結(jié)構(gòu):
my_project/ ├── CMakeLists.txt ├── vcpkg.json # 依賴聲明(manifest) ├── vcpkg-configuration.json # 版本鎖定配置(可選) ├── src/ │ └── main.cpp └── build/ # 構(gòu)建輸出目錄
vcpkg.json:
{
"name": "my-cross-platform-app",
"version": "0.1.0",
"dependencies": [
"fmt",
"spdlog",
"nlohmann-json",
"cxxopts"
]
}CMakeLists.txt:
cmake_minimum_required(VERSION 3.20)
project(MyCrossPlatformApp LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# find_package 的包必須與 vcpkg.json 中的依賴一一對應(yīng)
find_package(fmt REQUIRED)
find_package(spdlog REQUIRED)
find_package(nlohmann_json REQUIRED)
find_package(cxxopts REQUIRED)
add_executable(my_app src/main.cpp)
target_link_libraries(my_app PRIVATE
fmt::fmt
spdlog::spdlog
nlohmann_json::nlohmann_json
cxxopts::cxxopts
)
src/main.cpp:
#include <fmt/core.h>
#include <spdlog/spdlog.h>
#include <nlohmann/json.hpp>
#include <cxxopts.hpp>
using json = nlohmann::json;
int main(int argc, char** argv) {
cxxopts::Options options("my_app", "A cross-platform C++ app");
options.add_options()
("n,name", "Your name", cxxopts::value<std::string>());
auto result = options.parse(argc, argv);
std::string name = result["name"].as<std::string>();
json j = {{"name", name}, {"platform", VCPKG_TARGET_TRIPLET}};
spdlog::info("Hello, {}! Input: {}", name, j.dump());
return 0;
}構(gòu)建與運行:
# Linux
cmake -B build -S . \
-DCMAKE_TOOLCHAIN_FILE=~/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build
./build/my_app --name World
# Windows (PowerShell)
cmake -B build -S . `
-DCMAKE_TOOLCHAIN_FILE=$HOME/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build
.\build\Release\my_app.exe --name World
5. 版本管理與鎖定
5.1 版本基線(Baseline)
vcpkg 每發(fā)布一個新版本都會對應(yīng)一個 基線,記錄了當(dāng)時所有可用包的版本信息。
# 查看當(dāng)前使用的基線 vcpkg x-history
5.2 通過 vcpkg-configuration.json 鎖定版本
{
"registries": [
{
"kind": "artifact",
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
"name": "microsoft"
}
],
"default-registry": {
"kind": "git",
"repository": "https://github.com/microsoft/vcpkg",
"baseline": "abcdef1234567890abcdef1234567890abcdef12"
}
}5.3 覆蓋特定包版本(Overlay)
# 創(chuàng)建 overlay 目錄 mkdir -p my-overlay-ports/fmt # 將自定義版本的 fmt 放到此處即可覆蓋默認(rèn)
然后在 vcpkg.json 中引用:
{
"name": "my-project",
"version": "1.0.0",
"dependencies": ["fmt"],
"overlay-ports": [ "./my-overlay-ports" ]
}6. 自定義編譯選項
6.1 特征(Features)
許多包提供了可選功能,通過特征來控制:
# 查看包的可用特征 vcpkg search fmt # 安裝帶有特征版本的包 vcpkg install fmt[core,header-only] # 在 manifest 中使用特征
{
"name": "my-project",
"version": "1.0.0",
"dependencies": [
{
"name": "fmt",
"features": ["header-only"]
},
{
"name": "spdlog",
"features": ["fmt"]
}
]
}6.2 自定義三重(Custom Triplets)
在 ~/vcpkg/triplets/ 目錄下可以自定義三重文件。例如 x64-linux-static-md.cmake:
set(VCPKG_TARGET_ARCHITECTURE x64) set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE static) set(VCPKG_CMAKE_SYSTEM_NAME Linux)
之后即可使用:
vcpkg install fmt:x64-linux-static-md
7. vcpkg 目錄結(jié)構(gòu)解析
理解 vcpkg 的目錄結(jié)構(gòu)有助于排查問題和自定義配置:
~/vcpkg/
├── vcpkg # vcpkg 可執(zhí)行文件
├── bootstrap-vcpkg.sh # Linux 引導(dǎo)腳本
├── bootstrap-vcpkg.bat # Windows 引導(dǎo)腳本
├── ports/ # 包構(gòu)建腳本倉庫
│ ├── fmt/ # fmt 庫的 port 定義
│ │ ├── portfile.cmake # 構(gòu)建腳本
│ │ └── vcpkg.json # 包元數(shù)據(jù)
│ ├── spdlog/
│ └── ...
├── triplets/ # 三重定義文件
│ ├── x64-windows.cmake
│ ├── x64-linux.cmake
│ └── ...
├── packages/ # 已安裝的二進(jìn)制文件
│ ├── fmt_x64-linux/
│ │ ├── include/ # 頭文件
│ │ ├── lib/ # 庫文件 (.a / .lib)
│ │ └── debug/lib/ # Debug 版本庫文件
│ └── ...
├── downloads/ # 下載的源碼壓縮包緩存
├── buildtrees/ # 編譯中間產(chǎn)物
├── installed/ # 符號鏈接到 packages/ 的內(nèi)容
└── scripts/ # 輔助腳本
└── buildsystems/
├── vcpkg.cmake # CMake 工具鏈文件(核心)
└── msbuild/ # MSBuild 集成
8. 常見問題與排查
8.1 安裝失敗——端口錯誤
現(xiàn)象:vcpkg install 過程中報錯,提示構(gòu)建失敗。
排查步驟:
# 1. 查看詳細(xì)的錯誤日志 # 錯誤信息會顯示 logs 路徑,形如: # vcpkg/fmt: error: building fmt failed with: ... # 詳細(xì)信息在:~/vcpkg/buildtrees/fmt/install-x64-linux-dbg-out.log # 2. 嘗試清理后重新安裝 vcpkg remove fmt vcpkg clean vcpkg install fmt # 3. 嘗試不同版本 vcpkg install fmt@10.0.0
8.2 找不到 find_package
現(xiàn)象:CMake 配置時報 find_package 找不到包。
常見原因:
# 1. 忘記指定工具鏈文件 # 解決方法:cmake 時添加 -DCMAKE_TOOLCHAIN_FILE=... # 2. 三重不匹配——安裝了 x64-linux 但 CMake 沒傳對應(yīng)參數(shù) # 解決方法:確保 CMake 生成時使用了正確的三重 # 3. 包名與 CMake 目標(biāo)名不一致 # 查看已安裝包提供的 CMake targets ~/vcpkg/packages/fmt_x64-linux/share/fmt/fmtConfig.cmake
8.3 網(wǎng)絡(luò)問題與換源(中國用戶)
國內(nèi)用戶訪問 GitHub 和 vcpkg 官方源可能較慢,以下提供代理、換源和緩存鏡像三種加速方案。
8.3.1 設(shè)置代理(臨時有效)
# Linux / macOS export http_proxy=http://127.0.0.1:7890 export https_proxy=http://127.0.0.1:7890 # 如果要持久化,加入 shell 配置文件 echo 'export http_proxy=http://127.0.0.1:7890' >> ~/.bashrc echo 'export https_proxy=http://127.0.0.1:7890' >> ~/.bashrc
# Windows PowerShell(當(dāng)前會話) $env:HTTP_PROXY = "http://127.0.0.1:7890" $env:HTTPS_PROXY = "http://127.0.0.1:7890" # 持久化:將上述兩行添加到 PowerShell Profile notepad $PROFILE # 添加后執(zhí)行 . $PROFILE 生效
8.3.2 使用 Git 鏡像克隆 vcpkg
通過國內(nèi)鏡像倉庫克隆 vcpkg,加速首次下載:
# Linux git clone https://github.com.cnpmjs.org/microsoft/vcpkg.git ~/vcpkg # 或使用 gitee 鏡像 git clone https://gitee.com/mirrors/vcpkg.git ~/vcpkg # Windows (PowerShell) git clone https://github.com.cnpmjs.org/microsoft/vcpkg.git $env:USERPROFILE\vcpkg git clone https://gitee.com/mirrors/vcpkg.git $env:USERPROFILE\vcpkg
注意:使用鏡像克隆后,后續(xù)更新時建議切回官方源,或繼續(xù)使用鏡像倉庫進(jìn)行
git pull。
8.3.3 配置 vcpkg 二進(jìn)制緩存(Asset Cache)
vcpkg 支持配置二進(jìn)制緩存代理,避免重復(fù)從海外下載源碼包。推薦使用騰訊云 vcpkg 公眾鏡像:
# Linux export X_VCPKG_ASSET_SOURCES=x-azurl,https://mirrors.tencent.com/vcpkg/,proxy # 持久化到 shell 配置 echo 'export X_VCPKG_ASSET_SOURCES=x-azurl,https://mirrors.tencent.com/vcpkg/,proxy' >> ~/.bashrc
# Windows PowerShell $env:X_VCPKG_ASSET_SOURCES = "x-azurl,https://mirrors.tencent.com/vcpkg/,proxy" # 持久化到 PowerShell Profile notepad $PROFILE # 添加: $env:X_VCPKG_ASSET_SOURCES = "x-azurl,https://mirrors.tencent.com/vcpkg/,proxy"
8.3.4 使用自定義注冊表(Registry Mirror)
通過 vcpkg-configuration.json 配置自定義注冊表源:
{
"default-registry": {
"kind": "git",
"repository": "https://github.com/microsoft/vcpkg",
"baseline": "abcdef1234567890abcdef1234567890abcdef12"
},
"registries": [
{
"kind": "artifact",
"location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip",
"name": "microsoft"
}
]
}如果要使用國內(nèi)鏡像的 registry,可以將 repository 地址替換為鏡像地址。
8.3.5 完整配置示例(PowerShell Profile)
將以下內(nèi)容寫入 $PROFILE,一次性配置代理、緩存鏡像和默認(rèn)三重:
# ===== vcpkg 環(huán)境配置 ===== # 1. PATH $env:Path += ";$env:USERPROFILE\vcpkg" # 2. 默認(rèn)三重 $env:VCPKG_DEFAULT_TRIPLET = "x64-windows" # 3. 資產(chǎn)緩存鏡像(騰訊云公眾鏡像,下載源碼加速) $env:X_VCPKG_ASSET_SOURCES = "x-azurl,https://mirrors.tencent.com/vcpkg/,proxy" # 4. 代理(按需取消注釋) # $env:HTTP_PROXY = "http://127.0.0.1:7890" # $env:HTTPS_PROXY = "http://127.0.0.1:7890"
保存后執(zhí)行 . $PROFILE 生效。
# 驗證環(huán)境變量是否生效 echo $env:X_VCPKG_ASSET_SOURCES
8.4 vcpkg 更新
# 更新 vcpkg 自身 cd ~/vcpkg git pull ./bootstrap-vcpkg.sh # Linux ./bootstrap-vcpkg.bat # Windows # 更新所有已安裝包到最新 vcpkg upgrade
8.5 磁盤占用過大
# 清理編譯中間文件(不刪除已安裝的二進(jìn)制) vcpkg clean # 清理下載緩存 # 直接刪除 downloads/ 目錄即可 rm -rf ~/vcpkg/downloads/* # 查看已安裝包占用的磁盤空間 du -sh ~/vcpkg/packages/*
9. Linux vs Windows 差異對照
| 項目 | Linux | Windows |
|---|---|---|
| 引導(dǎo)腳本 | bootstrap-vcpkg.sh | bootstrap-vcpkg.bat / .ps1 |
| 默認(rèn)編譯器 | gcc/g++ | MSVC (cl.exe) |
| 庫文件后綴 | .a(靜態(tài))/ .so(動態(tài)) | .lib(靜態(tài))/ .dll(動態(tài)) |
| PATH 配置 | ~/.bashrc 或 ~/.zshrc | 系統(tǒng)環(huán)境變量 |
| CMake 生成器 | Unix Makefiles / Ninja | Visual Studio / Ninja |
| 常見三重 | x64-linux, x64-linux-static | x64-windows, x64-windows-static |
| 編譯多線程 | -j$(nproc) 自動 | 由 MSBuild 管理 |
| 調(diào)試符號 | DWARF 格式 | PDB 文件 |
10. 最佳實踐總結(jié)
| 實踐 | 說明 |
|---|---|
| 使用 manifest 模式 | 在項目中創(chuàng)建 vcpkg.json 聲明依賴,確保環(huán)境可復(fù)現(xiàn) |
| 提交 vcpkg.json 到版本控制 | 讓團隊所有成員使用相同的依賴版本 |
| 不要提交 vcpkg 自身 | 在 CI 中通過 git clone 拉取,避免倉庫膨脹 |
| 使用版本基線 | 通過 vcpkg-configuration.json 鎖定基線版本 |
| CI/CD 中緩存 vcpkg | 緩存 packages/ 和 downloads/ 目錄加速構(gòu)建 |
| 按三重組織安裝 | 明確區(qū)分 debug/release、靜態(tài)/動態(tài)、不同架構(gòu) |
| 定期更新 vcpkg 基線 | 獲取安全更新和新庫支持 |
| 使用 overlay ports | 需要修改庫源碼時使用 overlay 而不是直接修改 ports/ |
附錄 A:快速參考命令
| 命令 | 用途 |
|---|---|
vcpkg search <pkg> | 搜索包 |
vcpkg install <pkg> | 安裝包 |
vcpkg remove <pkg> | 卸載包 |
vcpkg list | 列出已安裝包 |
vcpkg update | 檢查可用更新 |
vcpkg upgrade | 升級所有包 |
vcpkg integrate install | 全局集成到構(gòu)建系統(tǒng) |
vcpkg integrate project | 生成單個項目的 MSBuild 集成 |
vcpkg depend-info <pkg> | 查看依賴信息 |
vcpkg clean | 清理編譯中間文件 |
vcpkg version | 查看版本 |
附錄 B:常用庫推薦
| 領(lǐng)域 | 推薦包 |
|---|---|
| 日志 | spdlog, glog |
| 序列化 | nlohmann-json, protobuf, msgpack |
| 網(wǎng)絡(luò) | libcurl, asio, cpp-httplib, grpc |
| 測試 | gtest, catch2, doctest |
| 命令行 | cxxopts, cli11 |
| 字符串 | fmt, fmtlib |
| 圖像 | stb, opencv |
| 壓縮 | zlib, lz4, zstd |
| 數(shù)據(jù)庫 | sqlite3, soci |
| 加密 | openssl, libsodium |
| GUI | imgui, wxwidgets, qt5 |
以上就是C/C++使用vcpkg管理跨平臺包的最佳實踐的詳細(xì)內(nèi)容,更多關(guān)于C/C++ vcpkg管理跨平臺包的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語言數(shù)組實現(xiàn)學(xué)生信息管理系統(tǒng)設(shè)計
這篇文章主要為大家詳細(xì)介紹了C語言數(shù)組實現(xiàn)學(xué)生信息管理系統(tǒng)設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
VC++6.0實現(xiàn)直線掃描轉(zhuǎn)換的圖文教程
這篇文章主要給大家介紹了關(guān)于VC++6.0實現(xiàn)直線掃描轉(zhuǎn)換的相關(guān)資料,文中通過圖文將實現(xiàn)的步驟一步步介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用VC++6.0具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2023-01-01
C++20新特性之std::jthread和chrono庫擴展
C++20標(biāo)準(zhǔn)庫特性2.3 std::jthread2.3.1 jthread 語法格式 常用方法2.3.2 總結(jié)2.4 chrono庫擴展2.4.1 語法格式與核心概念2.4.1.1 日歷類型創(chuàng)建2.4.1.2 ok() 判斷有效性2.4.1.3 常用方法2.4.2 舉例 本文記錄2026-06-06
C語言數(shù)據(jù)結(jié)構(gòu)之模式匹配字符串定位問題
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之模式匹配字符串定位問題的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下2017-10-10
詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員
這篇文章主要介紹了詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2016-01-01
C語言輾轉(zhuǎn)相除法求2個數(shù)的最小公約數(shù)
輾轉(zhuǎn)相除法最大的用途就是用來求兩個數(shù)的最大公約數(shù)。下面通過本文給大家介紹C語言輾轉(zhuǎn)相除法求2個數(shù)的最小公約數(shù),非常不錯,感興趣的朋友一起看看吧2016-12-12

