vcpkg: Accelerate your team development environment with binary caching and manifests

vcpkg: Accelerate your team development environment with binary caching and manifests

We are excited to announce support for vcpkg binary caching and manifest files. These are key features that have been requested by our users from the beginning, and are intended not only to give everyone more flexibility with the tool, but to enable key scenarios for teams and professional developers.

September is the biggest month for us in the Microsoft C++ team as it’s CppCon month! Our team has many exciting announcements for you this week, including a significant update to the vcpkg library manager for C/C++. We are excited to announce support for vcpkg binary caching and manifest files. These are key features that have been requested by our users from the beginning, and are intended not only to give everyone more flexibility with the tool, but to enable key scenarios for teams and professional developers. Our team is also actively working on versioning support and registries to allow you to install arbitrary library versions and bring your own libraries to vcpkg. These final two features are not ready yet, but expect an announcement on our blog soon with experimental support!

Announcing manifests and binary caching support

Manifests are files with the filename vcpkg.json that should be present in your project directory and can easily be checked into source control. Required library dependencies for your project can be declared in the file. Then, vcpkg is automatically invoked as a pre-build step to install missing dependencies for your active build configuration. Manifests currently work with CMake and MSBuild projects. For CMake projects, dependencies are installed during the CMake configuration step. For MSBuild, dependencies are installed when a build is requested, assuming the feature is turned on in the project system. You can also manually invoke vcpkg to install dependencies from a manifest using the command line by just running vcpkg install with no arguments in the context of the project folder. With manifests, dependencies are installed in a subfolder of your project called vcpkg_installed instead of the vcpkg installion directory. Manifests are also used for packaging dependencies for other developers to acquire with vcpkg, replacing CONTROL files going forward.

Binary caching allows you to share the compiled libraries you consume locally with your development team and continuous integration system, saving precious build time. Copies of your binaries are cached when they are compiled for the first time by vcpkg. The cache location can be set anywhere from your local filesystem to a remote fileshare or artifact storage location. Binaries can be packaged as .zip or .nupkg. In the .nupkg case, this allows you to use any valid NuGet server to cache your binaries, including Azure Artifacts and GitHub Packages. The benefit of this feature is that you can build your dependencies oncecache themthen install them in seconds on every other machine, continuous integration environment, or container from that point on. If you need to use the exact same dependencies on more than one machine or cloud environment, or if you are setting up a new machine to run builds, this feature will benefit you. You still need to build your dependencies once to populate the cache, but once that’s done, the headers and binaries can be deployed directly to other environments.

The rest of this post goes in-depth on how to get started with the new features in vcpkg.

c++ c#

Bootstrap 5 Complete Course with Examples

Bootstrap 5 Tutorial - Bootstrap 5 Crash Course for Beginners

Nest.JS Tutorial for Beginners

Hello Vue 3: A First Look at Vue 3 and the Composition API

Building a simple Applications with Vue 3

Deno Crash Course: Explore Deno and Create a full REST API with Deno

How to Build a Real-time Chat App with Deno and WebSockets

Convert HTML to Markdown Online

HTML entity encoder decoder Online

Dicey Issues in C/C++

C/C++ problems. If you are familiar with C/C++then you must have come across some unusual things and if you haven’t, then you are about to. The below codes are checked twice before adding, so feel free to share this article with your friends.

Loops in C++ | For, While, and Do While Loops in C++

In this Video We are going to see how to use Loops in C++. We will see How to use For, While, and Do While Loops in C++.

Using isdigit() in C/C++

In this article, we'll take a look at using the isdigit() function in C/C++. This is a very simple way to check if any value is a digit or not. Let's look

Object Oriented Programming in C++ | C++ OOPs Concepts | Learn Object Oriented C++

C++ is general purpose, compiled, object-oriented programming language and its concepts served as the basis for several other languages such as Java, Python, Ruby, Perl etc.

A Complete Guide to fread() in C/C++

In this article, we’ll take a look at using fread() in C/C++.