conan-vcpkg — Claude Code skill: what it does, how to install
Guides agents in managing C and C++ dependencies with Conan and vcpkg, handling CMake toolchains and binary compatibility.
npx skills add mohitmishra786/low-level-dev-skills --skill conan-vcpkg -a claude-codeWhat conan-vcpkg does
The skill provides workflow logic for choosing between Conan and vcpkg, declaring project dependencies, and invoking CMake. It outlines vcpkg setup in manifest mode with vcpkg.json as well as classic installs. For Conan 2.x, it supplies examples for conanfile.txt using the CMakeDeps and CMakeToolchain generators.
Included workflows cover cross-compilation profiles targeting Linux ARM64, custom conanfile.py classes, and package name lookups for libraries like Boost and libcurl. When installing Conan dependencies, missing pre-built packages require passing the --build=missing flag explicitly.
What it helps with
- choose between Conan and vcpkg based on target OS and build needs
- declare dependencies in a
vcpkg.jsonmanifest with platform conditions - link Conan 2.x toolchain files to an existing
CMakeLists.txt - write a Conan profile for Linux ARM64 cross-compilation
Example prompts for the agent
- Help me write a vcpkg.json manifest with fmt and OpenSSL for CMake
- How do I set up conanfile.txt with CMakeDeps and CMakeToolchain?
- Generate a Conan profile for cross-compiling to linux-arm64
How to install conan-vcpkg
1Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill conan-vcpkg -a claude-code2Manually: put the files in place
~/.claude/skills/conan-vcpkg/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/conan-vcpkg/
1Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill conan-vcpkg -a codex2Manually: put the files in place
.agents/skills/conan-vcpkg/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill conan-vcpkg -a cursor2Manually: put the files in place
.cursor/skills/conan-vcpkg/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install mohitmishra786/low-level-dev-skills conan-vcpkg2Manually: put the files in place
.github/skills/conan-vcpkg/SKILL.md1Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill conan-vcpkg -a gemini-cli2Platform CLI
gemini skills install https://github.com/mohitmishra786/low-level-dev-skills --path skills/build-systems/conan-vcpkgManually: put the files in place
.devin/skills/conan-vcpkg/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add mohitmishra786/low-level-dev-skills --skill conan-vcpkg -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about conan-vcpkg
How do I install conan-vcpkg in Claude Code?
Run npx skills add mohitmishra786/low-level-dev-skills --skill conan-vcpkg -a claude-code in your terminal.
What does the conan-vcpkg skill do?
It gives coding agents reference workflows for managing C and C++ packages, creating manifest files, and configuring CMake toolchains.
When does the skill recommend Conan over vcpkg?
Conan is preferred when projects require binary caching to avoid CI rebuilds, flexible version ranges, or custom cross-compilation profiles.
Source text
SKILL.md · MIT
---
name: conan-vcpkg
description: 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.
---
# 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 vcpkg
git 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 CMake
cmake -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.txt
cmake_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 dependencies
cmake -S . -B build \
-DCMAKE_TOOLCHAIN_FILE=/path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build
```
### 4. Conan setup
```bash
# Install Conan
pip install conan
# Set up default profile (detects compiler, OS)
conan profile detect
# Check your profile
conan profile show
```
### 5. Conan with CMake (Conan 2.x)
```ini
# conanfile.txt
[requires]
zlib/1.3
fmt/10.2.1
openssl/3.2.0
[generators]
CMakeDeps
CMakeToolchain
[options]
openssl/*:shared=False
```
```bash
# Install dependencies
conan install . --output-folder=build --build=missing
# Configure and build
cmake -S . -B build \
-DCMAKE_TOOLCHAIN_FILE=build/conan_toolchain.cmake \
-DCMAKE_BUILD_TYPE=Release
cmake --build build
```
```cmake
# CMakeLists.txt
find_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=Linux
arch=armv8
compiler=gcc
compiler.version=12
compiler.libcxx=libstdc++11
build_type=Release
[buildenv]
CC=aarch64-linux-gnu-gcc
CXX=aarch64-linux-gnu-g++
[tool_requires]
# Tools that run on build machine (x86)
```
```bash
# Cross-compile
conan install . \
--profile:build=default \
--profile:host=linux-arm64 \
--output-folder=build-arm \
--build=missing
```
### 7. conanfile.py (advanced)
```python
# conanfile.py
from conan import ConanFile
from 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
| Library | vcpkg name | Conan name |
|---------|-----------|-----------|
| zlib | `zlib` | `zlib/1.3` |
| OpenSSL | `openssl` | `openssl/3.2.0` |
| libcurl | `curl` | `libcurl/8.4.0` |
| {fmt} | `fmt` | `fmt/10.2.1` |
| spdlog | `spdlog` | `spdlog/1.12.0` |
| Boost | `boost` | `boost/1.83.0` |
| nlohmann-json | `nlohmann-json` | `nlohmann_json/3.11.3` |
| googletest | `gtest` | `gtest/1.14.0` |
| Google Benchmark | `benchmark` | `benchmark/1.8.3` |
| SQLite | `sqlite3` | `sqlite3/3.44.0` |
| protobuf | `protobuf` | `protobuf/4.25.1` |
For vcpkg baseline pinning and Conan binary cache setup, see [references/package-manager-patterns.md](references/package-manager-patterns.md).
## 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 · MIT · mohitmishra786/low-level-dev-skills