mrkeyoor.com_
Tue 01 Sept 17:44 UTC
Dev Toolsevaluationupdated 31 Aug 2026

vcpkg review

vcpkg is a free C and C++ package manager maintained by Microsoft and the wider community. It helps teams fetch, build, version, and reuse native dependencies across Windows, macOS, and Linux without maintaining a separate hand-written build recipe for every library.

+3 / 1dstars / 7d
Verdict

Our build succeeded in 12 seconds. vcpkg is a strong default for cross-platform C and C++ teams that value a large port ecosystem, first-party CMake and MSBuild guidance, and reproducible dependency policy. Use it with a pinned baseline and caches, but budget ownership for port failures and do not treat 1,174 open issues as background noise.

We ran it

Install✓ · 22s35 packages · 37 MB
Build✓ · 12s
Testsn/ano test script
Known vulns0(pip-audit)
Repo14240 files~8,248 lines of source · 20.4 MB · 5 CI workflows

Answers from our run

Does vcpkg build from source?

Dependencies installed in 22 seconds (35 packages), and the build succeeded in 12 seconds. We cloned commit 8babd6f into a clean Debian container with 3 CPUs and no project-specific setup.

Does vcpkg have tests you can run?

Not through a standard command: the project exposes no test script or target that our harness could run.

Does vcpkg have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use vcpkg?

Developers who want only prebuilt binaries and never want to compile native dependencies

What are the alternatives to vcpkg?

Conan, CPM.cmake, Hunter. Our build succeeded in 12 seconds.

Setup4/522-second install, but policy choices remain
Docs5/5Detailed guides for major build systems and workflows
Community4/527,415 stars and fresh pushes, with a large issue backlog
Maturity5/5Maintained since 2016 with enterprise-oriented features

Discussed on

  1. hnAnnouncing a single C++ library manager for Linux, macOS and Windows: Vcpkg64 points
  2. hnVcpkg: a tool to acquire and build C++ open source libraries on Windows38 points
  3. hnA Year of C++ Improvements in Visual Studio, VS Code, and Vcpkg11 points
  4. hnAll vcpkg enterprise features now generally available5 points

Who it’s for

C and C++ teams that want one dependency workflow across Windows, macOS, and Linux
CMake or MSBuild users who want documented build-system integration
Organizations that need version pinning, private registries, binary caching, or offline asset caches
Library maintainers willing to contribute or repair package recipes when needed

Who it’s NOT for

Developers who want only prebuilt binaries and never want to compile native dependencies
Small projects that already work well with a platform package manager and do not need cross-platform reproducibility
Teams that require a quiet issue tracker and vendor-style support guarantees
Security-sensitive users who might mistake a clean Python audit for an audit of downloaded C and C++ port sources

Setup reality

In our run, installation succeeded in 22 seconds, installed 35 packages, and used 37 MB on disk; the build then succeeded in 12 seconds. There was no test script or test target, so tests were skipped, which limits how much confidence this run can provide. The README makes first use look approachable through quick-start guides and short commands, but real adoption still requires choosing a triplet, integration mode, versioning policy, cache strategy, and sometimes fixing or contributing a port. The reported pip-audit result was 0 known vulnerabilities for the measured Python environment, not a security audit of vcpkg's C and C++ supply chain.

It turns native dependency work into shared infrastructure

vcpkg addresses a stubborn C and C++ problem: obtaining the same libraries, options, and transitive dependencies on several operating systems without every team inventing its own scripts. Launched in 2016 and maintained by Microsoft with community contributions, it now presents itself as a cross-platform package manager for Windows, macOS, and Linux. Its value is less about replacing a compiler and more about making dependency acquisition repeatable enough to belong in source control and CI.

The basic workflow is unusually legible for native tooling. A project can create a manifest with vcpkg new --application, add a dependency with vcpkg add port fmt, and connect the result to CMake, MSBuild, or another build system. That 2-command introduction is honest as far as it goes: vcpkg gives developers a recognizable package-management surface while still respecting the build systems used by the underlying libraries.

Our install and build completed, but no tests ran

In our sandbox run at commit 8babd6f, installation succeeded in 22 seconds. It installed 35 packages and occupied 37 MB on disk in a fresh, unprivileged Debian container with 3 CPUs and 8 GB of RAM. The build also succeeded, taking 12 seconds. Those are useful signs that the checked-out repository could complete the measured setup and build path without secrets or privileged container access.

The test result needs equally direct treatment: there was no test script or target, so our run skipped tests. We therefore measured 0 executed tests, not a passing test suite. The repository contained 14,240 files, about 8,248 measured lines of source, 5 CI workflow files, no Dockerfile, and no tests directory. That combination shows automation is present, but our box did not independently exercise functional behavior after the build.

The measurement pipeline also reported a successful pip-audit with 0 known vulnerabilities. That finding belongs specifically to the installed Python environment in this run. It does not prove that vcpkg ports, downloaded source archives, build tools, or resulting C and C++ binaries are vulnerability-free. Native dependency managers sit near the software supply chain, so teams should keep their normal source verification, baseline review, license review, and artifact scanning controls.

Versioning and caches are the reasons to choose it

vcpkg's strongest features appear after the first installation. Manifests let a repository declare dependencies, versioning gives teams a way to control changes, and registries support publishing internal packages rather than placing every recipe in a public catalog. Binary caching can avoid rebuilding identical artifacts on each CI worker, while asset caching supports offline or restricted-network scenarios. These 4 capabilities turn it from a convenience command into dependency infrastructure.

Its integration range is another concrete advantage. The README links separate starting paths for CMake, MSBuild, manual build-system integration, Visual Studio, Visual Studio Code, CLion, and Qt Creator. That does not guarantee every port behaves identically everywhere, but it reduces the documentation gap for mixed-tool organizations. The MIT license is permissive for the manager itself, while each library installed through a port retains its original license, a distinction procurement teams must track.

The project also exposes practical escape hatches. Teams can add missing libraries by contributing ports, publish packages through their own registries, reuse built artifacts, and populate asset caches before entering an air-gapped environment. Telemetry can be disabled during bootstrap, with a command-line flag, or through 1 environment variable. Those controls matter because package management often runs in CI, developer laptops, and restricted production build networks with different privacy and network requirements.

The port ecosystem saves work and creates obligations

The central rough edge is that vcpkg usually builds libraries through each upstream project's preferred system and downloads sources and tools from their official distribution locations. A single command can therefore hide a varied set of compilers, scripts, patches, licenses, and network endpoints. When a port breaks on an uncommon triplet or after an upstream release, the user may need to read build logs, pin versions, patch a recipe, or wait for maintainers rather than simply retrying.

The issue tracker reinforces that expectation. The repository reports 1,174 open issues, too many to interpret as a promise of quick individual support. Yet the latest release, 2026.07.29, was published on July 31, 2026, and the repository was pushed again on August 31, 2026. Combined with 27,415 stars, those dates describe an actively maintained and widely adopted project with a substantial support surface, not an abandoned tool with an old tag.

Documentation is a major counterweight to that complexity. The README routes users to Microsoft Learn for quick starts, manifest mode, classic mode, build integration, versioning, registries, caching, privacy, and contribution guidance. It also explains how to locate installed license files and how firewall needs vary by port. The docs cannot remove native-build failures, but they give a team specific operating models instead of leaving policy to scattered examples from 2016.

It belongs beside the build system and artifact cache

In a real stack, commit the manifest and version baseline with the application, invoke vcpkg before CMake or MSBuild configuration, and place binary or asset caches near CI workers. These 3 layers let private registries hold company packages while the public registry supplies open-source ports. Treat generated binaries as build artifacts, scan them, and promote them through environments under the same controls used for any other third-party component.

Choose Conan when profiles, remote repositories, and its recipe ecosystem are already organizational standards. Choose CPM.cmake when a small CMake-only project wants dependencies declared close to CMakeLists.txt and can accept source fetching during configuration. For a multi-platform product with 3 or more build environments, vcpkg's documented integrations, registries, version controls, and caching usually justify the extra machinery. It is mature infrastructure, but it works best when someone explicitly owns dependency policy.

Alternatives

ProjectWhat it isPick it when
ConanA cross-platform C and C++ package manager with a recipe-centered ecosystem.pick this instead when your organization already uses Conan recipes, remotes, profiles, and package promotion workflows.
CPM.cmakeA small CMake dependency manager built around FetchContent.pick this instead when you want dependencies declared directly in CMake and do not need a large external port registry.
HunterA CMake-driven package manager that keeps dependency acquisition close to the build.pick this instead when an existing CMake codebase already depends on Hunter and migration costs outweigh vcpkg's broader integrations.

What people are saying

  1. [velocity-scout] microsoft/vcpkg

Sources

  1. microsoft/vcpkg GitHub repository
  2. vcpkg documentation
  3. vcpkg manifest mode
  4. vcpkg privacy and telemetry

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →