{"id":30808,"date":"2022-07-25T18:23:53","date_gmt":"2022-07-25T18:23:53","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=30808"},"modified":"2024-04-01T17:53:05","modified_gmt":"2024-04-01T17:53:05","slug":"vcpkg-july-2022-release-is-now-available-shared-libraries-on-linux-improved-vcpkg-new-optional-name-and-version-fields-and-more","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/vcpkg-july-2022-release-is-now-available-shared-libraries-on-linux-improved-vcpkg-new-optional-name-and-version-fields-and-more\/","title":{"rendered":"vcpkg July 2022 Release is Now Available: Shared Libraries on Linux, Improved vcpkg new, Optional name and version Fields, and More\u2026"},"content":{"rendered":"<p>The <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\/tag\/2022.07.25\">July 2022 release of the vcpkg package manager is available<\/a>. This blog post summarizes changes from June 16<sup>th<\/sup>, 2022 to July 24<sup>th<\/sup>, 2022 for the <a href=\"https:\/\/github.com\/microsoft\/vcpkg\">microsoft\/vcpkg<\/a> and <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/\">microsoft\/vcpkg-tool<\/a> GitHub repos.<\/p>\n<p>Some stats for this period:<\/p>\n<ul>\n<li><strong>15 new ports<\/strong> were added to the open-source registry. If you are unfamiliar with the term \u2018port\u2019, they are packages that are built from source and are typically C\/C++ libraries.<\/li>\n<li><strong>360 updates<\/strong> were made to existing ports. As always, we validate each change to a port by building all other ports that depend on or are depended by the library that is being updated for our nine main triplets.<\/li>\n<li>There are now <strong>1,967 total libraries<\/strong> available in the vcpkg public registry. When including all available versions, there are <strong>10,106 port versions<\/strong>.<\/li>\n<li>The <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\/tag\/2022.07.25\">July release of the main vcpkg repo<\/a> includes <strong>278 commits<\/strong>.<\/li>\n<li><strong>90 contributors<\/strong> submitted PRs, issues, or participated in discussions in the repo.<\/li>\n<li>The main vcpkg repo has <strong>4.7k forks<\/strong> and <strong>16.3k stars<\/strong> on GitHub.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Notable Changes<\/h3>\n<h4>Better support for shared libraries on Linux<\/h4>\n<p>This update includes a community triplet for installing shared libraries on Linux: x64-linux-dynamic. This was made possible by adding rpath support to make ports relocatable. After building a port, the binaries are patched to have correct rpath values relative to lib\/ (or debug\/lib\/). This update is significant because it makes it much easier to handle shared libraries on Linux, meaning users don\u2019t have to install libraries statically on Linux to get the best user experience.<\/p>\n<p>PR: <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/pull\/23035\">Microsoft\/vcpkg#23035<\/a> (thank you @<a href=\"https:\/\/github.com\/Osyotr\">Osyotr<\/a>!)<\/p>\n<p>&nbsp;<\/p>\n<h4>\u2018vcpkg new\u2019 now generates both port and artifact manifest files<\/h4>\n<p>As part of the vcpkg artifacts experience, a new command called new was added that can generate a vcpkg-configuration.json file. The file is a manifest for artifacts that vcpkg can install for a project. In this update, the implementation was re-written in C++ and the command now also generates a vcpkg.json file for declaring ports for a project. It also fills in the default registry with the current baseline git SHA. Going forward, vcpkg new will be useful for configuring a project for use with vcpkg, whether it requires ports or artifacts.<\/p>\n<p>PR: <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/613\">Microsoft\/vcpkg-tool#613<\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>name and version fields are no longer required in vcpkg.json files<\/h4>\n<p>We sometimes get asked by users why vcpkg.json files require a name and a version field to be filled in. This is a consequence of the same file being used both for authoring ports and for consuming them in an application. These fields are required metadata for ports so they can be organized and referenced appropriately by end users. However, it is clear that these fields don\u2019t serve much purpose if you are only using vcpkg to acquire other dependencies and aren\u2019t producing your own vcpkg ports.<\/p>\n<p>As a result, we have made these fields optional in vcpkg.json. This is also consistent with how vcpkg-configuration.json is structured for artifacts. However, there are implications when generating manifests using vcpkg new \u2013 this command should be called with either a pair of &#8211;name and &#8211;version properties or with &#8211;application, which designates the manifest as one that won\u2019t need these fields.<\/p>\n<p>PR: <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/605\">Microsoft\/vcpkg-tool#605<\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>vcpkg find artifact can be filtered by registry<\/h4>\n<p>It is now possible to search for artifacts under a specific registry by running<\/p>\n<p><code>vcpkg find artifact:&lt;registry name&gt;<\/code><\/p>\n<p>Example:<\/p>\n<p><img decoding=\"async\" width=\"1439\" height=\"221\" class=\"wp-image-30810\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2022\/07\/text-description-automatically-generated.png\" alt=\"Text Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2022\/07\/text-description-automatically-generated.png 1439w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2022\/07\/text-description-automatically-generated-300x46.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2022\/07\/text-description-automatically-generated-1024x157.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2022\/07\/text-description-automatically-generated-768x118.png 768w\" sizes=\"(max-width: 1439px) 100vw, 1439px\" \/><\/p>\n<p>PR: <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/608\">Microsoft\/vcpkg-tool#608<\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>vcpkg-init.ps1 installer now works with PowerShell on Linux<\/h4>\n<p>When we announced the vcpkg artifacts experience, there were two ways to install vcpkg with this support. On Linux\/macOS, we provided a bash script, and on Windows, a PowerShell script. In this release of vcpkg, the PowerShell installer script now also works on macOS and Linux, so you can freely use it in these environments. For updated instructions on how to install, use, or remove vcpkg using one of these scripts, see: <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool#installuseremove\">microsoft\/vcpkg-tool: Components of microsoft\/vcpkg &#8216;s binary. (github.com)<\/a><\/p>\n<p>PR: <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/pull\/611\">Microsoft\/vcpkg-tool#611<\/a><\/p>\n<p>&nbsp;<\/p>\n<h4>Documentation changes<\/h4>\n<p>The following documentation changes were made this release:<\/p>\n<ul>\n<li>Added documentation for remove command.<\/li>\n<li>Added documentation for x-update-baseline command, used to update version baselines for configured registries.<\/li>\n<li>Revised documentation for vcpkg_cmake_configure, a port helper function.<\/li>\n<li>Revised documentation for vcpkg_extract_source_archive, a port helper function:\n<ul>\n<li>Don\u2019t list deprecated overload first<\/li>\n<li>Documents REF<\/li>\n<li>Document each option in a list for improved discoverability, instead of a large block<\/li>\n<li>Replace static list of ports with a GitHub query that will find uses in all ports<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>PRs: <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/pull\/25264\">Microsoft\/vcpkg#25264<\/a>, <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/pull\/25256\">Microsoft\/vcpkg#25256<\/a>, <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/pull\/25255\">Microsoft\/vcpkg#25255<\/a>, <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/pull\/25178\">Microsoft\/vcpkg#25178<\/a><\/p>\n<p>&nbsp;<\/p>\n<h3>Total Ports Available for Tested Triplets<\/h3>\n<table>\n<tbody>\n<tr>\n<td><strong>triplet<\/strong><\/td>\n<td><strong>ports available<\/strong><\/td>\n<\/tr>\n<tr>\n<td>x86-windows<\/td>\n<td>1,772<\/td>\n<\/tr>\n<tr>\n<td>x64-windows<\/td>\n<td>1,820<\/td>\n<\/tr>\n<tr>\n<td>x64-windows-static<\/td>\n<td>1,719<\/td>\n<\/tr>\n<tr>\n<td>x64-windows-static-md<\/td>\n<td>1,733<\/td>\n<\/tr>\n<tr>\n<td>x64-uwp<\/td>\n<td>936<\/td>\n<\/tr>\n<tr>\n<td>arm64-windows<\/td>\n<td>1,362<\/td>\n<\/tr>\n<tr>\n<td>arm-uwp<\/td>\n<td>887<\/td>\n<\/tr>\n<tr>\n<td>x64-osx<\/td>\n<td>1,688<\/td>\n<\/tr>\n<tr>\n<td>x64-linux<\/td>\n<td>1,754<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>While vcpkg supports a much larger variety of target platforms x architectures, the list above is routinely tested to ensure updated ports don\u2019t break other ports in the catalog.<\/p>\n<p>&nbsp;<\/p>\n<h3>Thank you to our contributors<\/h3>\n<p>vcpkg couldn\u2019t 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 and vcpkg-tool repos in this release:<\/p>\n<ul>\n<li>dg0yt (22 commits)<\/li>\n<li>autoantwort (22 commits)<\/li>\n<li>Osyotr (12 commits)<\/li>\n<li>Thomas1664 (10 commits)<\/li>\n<li>Neumann-A (4 commits)<\/li>\n<li>coryan (3 commits)<\/li>\n<li>AenBleidd (3 commits)<\/li>\n<li>ekilmer (2 commits)<\/li>\n<li>m-kuhn (2 commits)<\/li>\n<li>eao197 (2 commits)<\/li>\n<li>myd7349 (2 commits)<\/li>\n<li>RT222 (1 commit)<\/li>\n<li>an-tao (1 commit)<\/li>\n<li>cenit (1 commit)<\/li>\n<li>Be-ing (1 commit)<\/li>\n<li>bsiegert (1 commit)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Learn More<\/h3>\n<p>You can find the <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\/tag\/2022.07.25\">full July release notes on GitHub<\/a> for the main repo. Recent updates to the vcpkg tool can be viewed on the <a href=\"https:\/\/github.com\/microsoft\/vcpkg-tool\/releases\">vcpkg-tool Releases page<\/a>. If you\u2019re new to vcpkg or curious about how a package manager can make your life easier as a C\/C++ developer, check out the <a href=\"https:\/\/vcpkg.io\/en\/index.html\">vcpkg website \u2013 vcpkg.io<\/a>.<\/p>\n<p>If you would like to contribute to vcpkg and its library catalog, or want to give us feedback on anything, check out our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/releases\">GitHub repo<\/a>. Please report bugs or request updates to ports in our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/issues\">issue tracker<\/a>, or join more general discussion in our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/discussions\">discussion forum<\/a>. For an overview of our top priorities and backlog, take a look at our <a href=\"https:\/\/github.com\/microsoft\/vcpkg\/wiki\/Roadmap\">roadmap page<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The July 2022 release of the vcpkg package manager is available. This blog post summarizes changes from June 16th, 2022 to July 24th, 2022 for the microsoft\/vcpkg and microsoft\/vcpkg-tool GitHub repos. Some stats for this period: 15 new ports were added to the open-source registry. If you are unfamiliar with the term \u2018port\u2019, they are [&hellip;]<\/p>\n","protected":false},"author":1063,"featured_media":28096,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1,272],"tags":[273],"class_list":["post-30808","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cplusplus","category-vcpkg","tag-vcpkg"],"acf":[],"blog_post_summary":"<p>The July 2022 release of the vcpkg package manager is available. This blog post summarizes changes from June 16th, 2022 to July 24th, 2022 for the microsoft\/vcpkg and microsoft\/vcpkg-tool GitHub repos. Some stats for this period: 15 new ports were added to the open-source registry. If you are unfamiliar with the term \u2018port\u2019, they are [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/30808","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/1063"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=30808"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/30808\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/28096"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=30808"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=30808"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=30808"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}