vcpkg 2023.10.19 Release: Export for Manifests, Documentation Improvements, and More… - C++ Team Blog (original) (raw)

The 2023.10.19 release of the vcpkg package manager is available. This blog post summarizes changes from August 10th, 2023 to October 19th, 2023 for the Microsoft/vcpkg, Microsoft/vcpkg-tool, and Microsoft/vcpkg-docs GitHub repos.

Some stats for this period:

Key changes

Notable changes for this release are summarized below.

vcpkg export now supports manifest mode

The vcpkg export command can be used to export built packages from the installed directory to a standalone SDK. A variety of formats are supported, including NuGet, a zip, or a raw directory. The SDK contains all prebuilt binaries for the selected packages, their transitive dependencies, and integration files such as CMake toolchain or MSBuild props/targets. This command is useful for developers who want to export their dependencies to a portable format for their end users to consume, when those end users do not have vcpkg.

Now, this command is supported for manifest-based (vcpkg.json) projects. Summary of changes:

Documentation for vcpkg export in manifest mode

PR: Microsoft/vcpkg-tool#1136

Implemented default triplet changes announced earlier this year

In a previous blog post, we announced that we would be changing the default behavior for commands that accept a triplet as an option but are not provided one. This change is now live. The default triplet assumed is no longer always x86-windows but will instead use a triplet inferred from your CPU architecture and operating system.

PR: Microsoft/vcpkg-tool#1180

Improvements to vcpkg help

The documentation provided when running vcpkg help or vcpkg help <command> has been updated. This should make it easier to explore vcpkg without having to go to the documentation on Microsoft Learn and also improves the autocompletion (Tab) experience for the tool. Below are some screenshots of the new experience.

Before (left) and after (right) when running vcpkg help (or not providing any commands to vcpkg):

Summary of changes:

Before (left) and after (right) when running vcpkg help install:

Summary of changes:

With the autocompletion improvements, vcpkg is able to autocomplete commands like: x-set autocompleting to x-set-installed.

PR: Microsoft/vcpkg-tool#1169

Introduced –x-cmake-debug and –x-cmake-configure-debug options

Thanks to a community contribution, two new experimental common command options have been added to vcpkg: --x-cmake-debug and --x-cmake-configure-debug. These options help facilitate CMake debugging for upstream build systems’ CMakeLists.txt.

–x-cmake-debug

Usage:

--x-cmake-debug=<debugger-pipe>[;semicolon;port;list]

Enables CMake’s –debugger while running directly-invoked CMake scripts like triplet files (for example: x64-windows.cmake) or portfile.cmake files.

The <debugger-pipe> value is passed as –debugger-pipe on the CMake command line.

For more information, see documentation for x-cmake-debug.

–x-cmake-configure-debug

Usage:

--x-cmake-configure-debug=<debugger-pipe>[;semicolon;port;list]

Enables CMake’s –debugger within upstream build systems’ CMakeLists.txt, such as within vcpkg_cmake_configure.

The <debugger-pipe> value is passed as –debugger-pipe on the CMake command line.

Although all ports should be calling CMake inside of the portfile to obtain compile flags from the CMake toolchain, this command is mainly useful for ports actually using CMake as their build system.

For more information, see documentation for x-cmake-configure-debug.

PR: Microsoft/vcpkg-tool#1173 (thanks @Neumann-A!)

Command: “vcpkg cache” removed

The vcpkg cache command has been removed as it was rendered obsolete by the binary caching feature and our data indicated very few users were interacting with it.

PR: Microsoft/vcpkg-tool#1174

Documentation changes

This release includes the most significant documentation changes ever for vcpkg. We have been listening to your feedback and actively developing new articles and improvements to our existing articles at https://learn.microsoft.com/vcpkg.

Below is a summary of notable documentation changes:

Bug fixes

Total ports available for tested triplets

triplet ports available
x64-windows 2,163
x86-windows 2,088
x64-windows-static 2,054
x64-windows-static-md 2,074
arm64-windows 1,749
x64-uwp 1,193
arm-uwp 1,160
x64-linux 2,124
x64-osx 2,017
arm-neon-android 1,464
x64-android 1,523
arm64-android 1,482

While vcpkg supports a much larger variety of target platforms and architectures, the list above is validated exhaustively to ensure updated ports don’t break other ports in the catalog.

Thank you to our contributors

vcpkg couldn’t be where it is today without contributions from our open-source community. Thank you for your continued support! The following people contributed to the vcpkg, vcpkg-tool, or vcpkg-docs repos in this release:

Is your company looking for a better C/C++ dependency management experience?

We are partnering with companies to help them get started with vcpkg and overcome any initial hurdles. We have also been making product and documentation changes based on feedback we receive from these partnerships. If you are interested in trying out vcpkg or just have some thoughts to share with us, feel free to reach out at vcpkg@microsoft.com.

Learn more

You can find the full 2023.10.19 release notes on GitHub for the main repo. Recent updates to the vcpkg tool can be viewed on the vcpkg-tool Releases page. To contribute to documentation, visit the vcpkg-docs repo. If you’re new to vcpkg or curious about how a package manager can make your life easier as a C/C++ developer, check out the vcpkg website – vcpkg.io.

If you would like to contribute to vcpkg and its library catalog, or want to give us feedback on anything, check out our GitHub repo. Please report bugs or request updates to ports in our issue tracker or join more general discussion in our discussion forum.

Author

Augustin Popa

Product manager on the Microsoft C++ team, currently working on vcpkg.