Layout of the vcpkg source tree

All vcpkg sources and build systems are in toolsrc. If you’d like to contribute to the vcpkg tool itself, most of your time will be spent in here.

Build Files

These are the files used to build and configure the project. In order to build with CMake, the only files you should be interested in are CMakeLists.txt, and .clang-format; in order to build with msbuild or the Visual Studio IDE, you will be interested in dirs.proj or vcpkg.sln. However, if you add or remove files, you will need to edit the MSBuild project files in the vcpkg* directories no matter what system you use.

Top Level

We have six files in this directory – one .clang-format file, one CMakeLists.txt file, three Visual Studio files, and VERSION.txt.

vcpkg, vcpkglib, vcpkgmetricsuploader, and vcpkgtest

These four contain exactly one <name>.vcxproj and one <name>.vcxproj.filters. The <name>.vcxproj file contains the source files and the <name>.vcxproj.filters contains information on how Visual Studio should lay out the project’s source files in the IDE’s project view.

vcpkgtest should not be touched. It’s likely that it will be deleted soon. If you want to test your code, use the cmake build system.

Source Files

If you’re modifying the project, it’s likely that these are the directories that you’re going to deal with.


There’s one file in here – pch.h. This contains most of the C++ standard library, and acts as a precompiled header. You can read more at the link.

There are three directories:


The source files live here. pch.cpp is the source file for the precompiled header; vcpkg.cpp is where the vcpkg binary lives; and vcpkgmetricsuploader.cpp is where the metrics uploader lives.

The interesting files live in the vcpkg and vcpkg-test directories. In vcpkg, you have the implementation for the interfaces that live in include/vcpkg; and in vcpkg-test, you have the tests and benchmarks.