Conan Vcpkg

mohitmishra786/low-level-dev-skills/skills/build-systems/conan-vcpkg

作者 mohitmishra786bdc58472fa9f無授權條款253 個星標收錄於 2026年10月9日更新於 2026年10月9日儲存庫3 個月前更新

C/C++ package manager skill covering Conan and vcpkg. Use when adding third-party library dependencies to C/C++ projects, managing binary compatibility, integrating with CMake, or choosing between Conan and vcpkg. Activates on queries about Conan, vcpkg, C++ dependency management, conanfile.txt, vcpkg.json, CMake package integration, or C++ package managers.

AI 產生的概覽

指導使用 Conan 與 vcpkg 管理 C/C++ 相依性,包含 CMake 整合與二進位相容性。

功能
此技能提供使用 Conan 與 vcpkg 宣告第三方 C/C++ 函式庫相依性、將其整合至 CMake 建置,以及管理二進位相容性的說明。內容涵蓋 vcpkg 傳統模式與資訊清單模式、Conan 2.x 的 conanfile.txt 與 conanfile.py 工作流程,以及用於交叉編譯的 Conan profile。它也包含兩種套件管理員的選擇指南與常見函式庫名稱對照表。
適用情境
在為 C/C++ 專案加入第三方函式庫相依性、設定 vcpkg.json 或 conanfile 檔案,或將 Conan、vcpkg 與 CMake 整合時使用。它也適用於在 Conan 與 vcpkg 之間做選擇,或排查 Conan 套件建置失敗的問題。
執行需求
不附帶指令碼,僅為說明文件。依指南操作需要 C/C++ 工具鏈、CMake,以及 vcpkg 或 Conan(透過 pip 安裝),並需要網路存取以取得套件與 vcpkg 儲存庫。

Conan and vcpkg

Purpose

Guide agents through C/C++ dependency management with Conan and vcpkg: declaring dependencies, integrating with CMake, managing binary compatibility, and choosing the right tool for a given project.

Triggers

  • "How do I add a C++ library dependency with Conan?"
  • "How do I use vcpkg with CMake?"
  • "What's the difference between Conan and vcpkg?"
  • "How do I add zlib/openssl/fmt with a package manager?"
  • "How do I create a vcpkg.json manifest?"
  • "My Conan package build is failing — how do I debug it?"

Workflow

1. Conan vs vcpkg decision

text
Which package manager?├── Team uses MSVC on Windows primarily → vcpkg (better MSVC integration)├── Need binary packages (no source builds in CI) → Conan (binary cache)├── Need cross-compilation support → Conan (profiles) or Zig-based builds├── Need a specific version of a package → Conan (flexible versioning)├── Quick project setup, just need it to work → vcpkg (simpler)└── Open-source project, broad audience → vcpkg (GitHub-integrated)

2. vcpkg setup

bash
# Clone vcpkggit clone https://github.com/microsoft/vcpkg.git./vcpkg/bootstrap-vcpkg.sh    # Linux/macOS./vcpkg/bootstrap-vcpkg.bat   # Windows
# Install packages (classic mode)./vcpkg/vcpkg install zlib curl openssl
# Integrate with CMakecmake -S . -B build \    -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake

3. vcpkg manifest mode (recommended)

json
// vcpkg.json — place at project root{    "name": "myapp",    "version": "1.0.0",    "dependencies": [        "zlib",        "curl",        { "name": "openssl", "version>=": "3.0.0" },        { "name": "boost-filesystem", "platform": "!windows" },        {            "name": "fmt",            "features": ["core"]        }    ],    "builtin-baseline": "abc123..."}
cmake
# CMakeLists.txtcmake_minimum_required(VERSION 3.20)project(myapp)
find_package(ZLIB REQUIRED)find_package(CURL REQUIRED)find_package(fmt REQUIRED)
add_executable(myapp src/main.cpp)target_link_libraries(myapp PRIVATE ZLIB::ZLIB CURL::libcurl fmt::fmt)
bash
# Build — vcpkg automatically installs dependenciescmake -S . -B build \    -DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmakecmake --build build

4. Conan setup

bash
# Install Conanpip install conan
# Set up default profile (detects compiler, OS)conan profile detect
# Check your profileconan profile show

5. Conan with CMake (Conan 2.x)

ini
# conanfile.txt[requires]zlib/1.3fmt/10.2.1openssl/3.2.0
[generators]CMakeDepsCMakeToolchain
[options]openssl/*:shared=False
bash
# Install dependenciesconan install . --output-folder=build --build=missing
# Configure and buildcmake -S . -B build \    -DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake \    -DCMAKE_BUILD_TYPE=Releasecmake --build build
cmake
# CMakeLists.txtfind_package(ZLIB REQUIRED)find_package(fmt REQUIRED)find_package(OpenSSL REQUIRED)
add_executable(myapp src/main.cpp)target_link_libraries(myapp PRIVATE    ZLIB::ZLIB    fmt::fmt    OpenSSL::SSL OpenSSL::Crypto)

6. Conan profiles for cross-compilation

ini
# ~/.conan2/profiles/linux-arm64[settings]os=Linuxarch=armv8compiler=gcccompiler.version=12compiler.libcxx=libstdc++11build_type=Release
[buildenv]CC=aarch64-linux-gnu-gccCXX=aarch64-linux-gnu-g++
[tool_requires]# Tools that run on build machine (x86)
bash
# Cross-compileconan install . \    --profile:build=default \    --profile:host=linux-arm64 \    --output-folder=build-arm \    --build=missing

7. conanfile.py (advanced)

python
# conanfile.pyfrom conan import ConanFilefrom conan.tools.cmake import CMakeToolchain, CMakeDeps, CMake
class MyAppConan(ConanFile):    name = "myapp"    version = "1.0"    settings = "os", "compiler", "build_type", "arch"
    def requirements(self):        self.requires("zlib/1.3")        self.requires("fmt/10.2.1")        if self.settings.os == "Linux":            self.requires("openssl/3.2.0")
    def generate(self):        tc = CMakeToolchain(self)        tc.generate()        deps = CMakeDeps(self)        deps.generate()
    def build(self):        cmake = CMake(self)        cmake.configure()        cmake.build()

8. Common dependency lookup

Libraryvcpkg nameConan name
zlibzlibzlib/1.3
OpenSSLopensslopenssl/3.2.0
libcurlcurllibcurl/8.4.0
{fmt}fmtfmt/10.2.1
spdlogspdlogspdlog/1.12.0
Boostboostboost/1.83.0
nlohmann-jsonnlohmann-jsonnlohmann_json/3.11.3
googletestgtestgtest/1.14.0
Google Benchmarkbenchmarkbenchmark/1.8.3
SQLitesqlite3sqlite3/3.44.0
protobufprotobufprotobuf/4.25.1

For vcpkg baseline pinning and Conan binary cache setup, see references/package-manager-patterns.md [blocked].

Related skills

  • Use skills/build-systems/cmake for CMake integration with both Conan and vcpkg
  • Use skills/compilers/cross-gcc for cross-compilation with Conan profiles
  • Use skills/build-systems/ninja as the backend for package-managed projects

來源與署名

來源:mohitmishra786/low-level-dev-skills位於skills/build-systems/conan-vcpkg提交bdc5847

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架