最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C/C++使用vcpkg管理跨平臺包的最佳實踐

 更新時間:2026年05月20日 09:02:56   作者:江南皮俠客  
本文介紹了vcpkg,一個微軟開源的C/C++包管理器,支持跨平臺、源碼構(gòu)建、版本管理、構(gòu)建系統(tǒng)集成等功能,文中詳細(xì)闡述了vcpkg的安裝、使用方法、版本管理、集成到項目、常見問題與解決方案等內(nèi)容,并提供了最佳實踐建議,需要的朋友可以參考下

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 Studio2019/2022(含"使用 C++ 的桌面開發(fā)"工作負(fù)載)cl 或 Visual Studio Installer 確認(rèn)
Windows SDK隨 VS 安裝或單獨安裝
CMake(可選)vcpkg 自身不強制,但項目推薦cmake --version

提示:如果使用 Visual Studio Code,建議安裝 CMake Toolsvcpkg 擴展。

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++、cmakemake。

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-windowsWindows x64 動態(tài)鏈接(默認(rèn))
x86-windowsWindows x86 動態(tài)鏈接
x64-windows-staticWindows x64 靜態(tài)鏈接
x64-windows-static-mdWindows x64 靜態(tài)鏈接(/MD 運行時)
x64-linuxLinux x64 動態(tài)鏈接(默認(rèn))
x64-linux-staticLinux x64 靜態(tài)鏈接
arm64-windowsWindows ARM64 動態(tài)鏈接
arm64-linuxLinux ARM64 動態(tài)鏈接
x64-osxmacOS x64
arm64-osxmacOS 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 會:

  1. 下載 包的源代碼(包含依賴鏈)
  2. 編譯 源碼生成二進(jìn)制文件
  3. 安裝 生成的庫文件和頭文件到 vcpkg 的 packages/ 目錄
  4. 注冊 到 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 差異對照

項目LinuxWindows
引導(dǎo)腳本bootstrap-vcpkg.shbootstrap-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 / NinjaVisual Studio / Ninja
常見三重x64-linux, x64-linux-staticx64-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
GUIimgui, wxwidgets, qt5

以上就是C/C++使用vcpkg管理跨平臺包的最佳實踐的詳細(xì)內(nèi)容,更多關(guān)于C/C++ vcpkg管理跨平臺包的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 解析鴻蒙輕內(nèi)核靜態(tài)內(nèi)存的使用

    解析鴻蒙輕內(nèi)核靜態(tài)內(nèi)存的使用

    摘要:靜態(tài)內(nèi)存實質(zhì)上是一個靜態(tài)數(shù)組,靜態(tài)內(nèi)存池內(nèi)的塊大小在初始化時設(shè)定,初始化后塊大小不可變更。靜態(tài)內(nèi)存池由一個控制塊和若干相同大小的內(nèi)存塊構(gòu)成??刂茐K位于內(nèi)存池頭部,用于內(nèi)存塊管理。內(nèi)存塊的申請和釋放以塊大小為粒度
    2021-06-06
  • C語言數(shù)組實現(xiàn)學(xué)生信息管理系統(tǒng)設(shè)計

    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)換的圖文教程

    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語言數(shù)組的各種操作梳理

    C語言數(shù)組的各種操作梳理

    數(shù)組是一組有序的數(shù)據(jù)的集合,數(shù)組中元素類型相同,由數(shù)組名和下標(biāo)唯一地確定,數(shù)組中數(shù)據(jù)不僅數(shù)據(jù)類型相同,而且在計算機內(nèi)存里連續(xù)存放,地址編號最低的存儲單元存放數(shù)組的起始元素,地址編號最高的存儲單元存放數(shù)組的最后一個元素
    2022-04-04
  • C++20新特性之std::jthread和chrono庫擴展

    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)之模式匹配字符串定位問題

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)之模式匹配字符串定位問題的相關(guān)資料,希望通過本文能幫助到大家,讓大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-10-10
  • 詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員

    詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員

    這篇文章主要介紹了詳解C++編程中的靜態(tài)成員與可變數(shù)據(jù)成員,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-01-01
  • 舉例講解C語言對歸并排序算法的基礎(chǔ)使用

    舉例講解C語言對歸并排序算法的基礎(chǔ)使用

    這篇文章主要介紹了C語言對歸并排序算法的使用,歸并排序算法的平均事件復(fù)雜度為(n\log n),需要的朋友可以參考下
    2016-05-05
  • C語言輾轉(zhuǎn)相除法求2個數(shù)的最小公約數(shù)

    C語言輾轉(zhuǎn)相除法求2個數(shù)的最小公約數(shù)

    輾轉(zhuǎn)相除法最大的用途就是用來求兩個數(shù)的最大公約數(shù)。下面通過本文給大家介紹C語言輾轉(zhuǎn)相除法求2個數(shù)的最小公約數(shù),非常不錯,感興趣的朋友一起看看吧
    2016-12-12
  • C++課程設(shè)計之運動會管理系統(tǒng)

    C++課程設(shè)計之運動會管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++課程設(shè)計之運動會管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10

最新評論

巴东县| 安义县| 台湾省| 建平县| 溆浦县| 衡阳市| 区。| 平顶山市| 天等县| 鞍山市| 忻城县| 宝清县| 沐川县| 轮台县| 宜章县| 玛曲县| 南川市| 阿拉善右旗| 孟州市| 天长市| 富源县| 玉树县| 峡江县| 湖口县| 金溪县| 大安市| 巴青县| 云梦县| 乌拉特中旗| 防城港市| 江阴市| 牡丹江市| 上高县| 山丹县| 房产| 威远县| 遵义市| 河西区| 九江县| 那曲县| 和顺县|