Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
319b8f0
[llvm] Fix resource path when building tools (#16294)
JackBoosY Feb 22, 2021
f3ce42e
[vcpkg baseline][stxxl] Skip baseline check for windows build (#16359)
JackBoosY Feb 24, 2021
95f881b
[vcpkg baseline][poppler] Add feature splash and add its dependency b…
JackBoosY Feb 24, 2021
f5f494d
[seal] Updated SEAL version to 3.6.2. (#16379)
Feb 24, 2021
feb0a36
[boost] /safeseh for assembly (#16375)
autoantwort Feb 24, 2021
e51bf8e
Update taglib to 1.12.0 (#16390)
pdehne Feb 24, 2021
c3de6c2
[brynet] upgrade to 1.10.0 (#16366)
IronsDu Feb 24, 2021
6a46f50
[sdl2] Update patch (#16370)
NancyLi1013 Feb 24, 2021
e3dde67
[amqpcpp] update to 4.3.11 (#16354)
JonLiu1993 Feb 24, 2021
8c0cac7
[fxdiv] create a new port (#16341)
luncliff Feb 24, 2021
365b3b6
[psimd] add a new port (#16339)
luncliff Feb 24, 2021
a09f19c
[docs/users/manifests.md] add a link to the specification (#16336)
coryan Feb 24, 2021
9c16956
[libpmemobj-cpp] update to ver. 1.12 (#16325)
JonLiu1993 Feb 24, 2021
c811649
[box2d] update to 2.4.1 (#16322)
JonLiu1993 Feb 24, 2021
0daf011
[python3] upgrade to 3.9.2 (#16315)
Hoikas Feb 24, 2021
6e8aaa7
[sqlite3] Update to 3.34.1 (#16125)
past-due Feb 24, 2021
c235296
[hazelcast-cpp-client] Add new port (#16235)
ihsandemir Feb 24, 2021
0cbc579
[rsasynccpp] Add new port (Rstein.AsyncCpp) (#16380)
renestein Feb 25, 2021
c0d4440
[vcpkg baseline] [itpp] Fix include directory (#16385)
PhoebeHui Feb 26, 2021
2bd1faf
[vcpkg-tool] Publish release 2021-02-24-d67989bce1043b98092ac45996a82…
ras0219-msft Feb 26, 2021
7c9d729
[docs] Add references to awesome community websites. Fixes #16278 (#1…
ras0219 Feb 26, 2021
45ae65f
[docs] Add CMake Integration to manifests.md (#16323)
ras0219 Feb 26, 2021
d8f0941
[realsense2] Update version to v 2.42.0 (#16411)
Cheney-W Feb 26, 2021
e3e1b64
[concurrentqueue] Update to 1.0.3 (#16404)
JonLiu1993 Feb 26, 2021
b5e6d68
[brotli] add iOS support (#16397)
jwtowner Feb 26, 2021
82034db
[libwebm] apply upstream changes to support Android NDK r15b and late…
jwtowner Feb 26, 2021
e25b620
[boost-context] fix linux -> windows cross compile (#16378)
autoantwort Feb 26, 2021
3426db0
[scripts-audit] Rollup PR 2021-02-26 (#16440)
strega-nil Feb 28, 2021
b5bc9d5
[Imgui] Update docking-experimental and freetype features to 1.81 (#1…
RT2Code Mar 1, 2021
d53885f
[vcpkg] [docs] Add Boost versioning example (#16381)
vicroms Mar 1, 2021
2a0707b
[vcpkg baseline][libnice] Skip all triplets check (#16473)
NancyLi1013 Mar 1, 2021
a6043e4
[google-cloud-cpp] update to latest release (v1.25.0) (#16477)
coryan Mar 1, 2021
94db0dc
[vcpkg-cmake] Fix typo in vcpkg_cmake_configure that prevented custom…
sylveon Mar 1, 2021
db519ea
[libnop] create a new port (#16471)
luncliff Mar 1, 2021
9b9a668
[functions-framework-cpp] update to latest release (v0.5.0) (#16447)
coryan Mar 1, 2021
e75b7c3
[qscintilla] Update to 2.12 (#16455)
m-kuhn Mar 1, 2021
e6b41b0
[protopuf] Update to 1.0.1 (#16459)
PragmaTwice Mar 1, 2021
a44feca
[sobjectizer] update to v5.7.2.3 (#16470)
eao197 Mar 1, 2021
b554d3a
[celero] Updated to v2.7.2 (#16446)
DigitalInBlue Mar 2, 2021
8e31229
[libhv] Add new port (#16460)
ithewei Mar 2, 2021
80976fc
[exprtk] Update ExprTk (#16458)
ArashPartow Mar 2, 2021
112067d
[libpq] fix filenames (linux -> windows cross compile) (#16434)
autoantwort Mar 2, 2021
f9763b7
Upgrade to Python 3.9.2 to avoid CVE-2021-3177 and CVE-2021-23336 (#1…
cclauss Mar 2, 2021
307ac18
[glm] Add namespace to export target (#16429)
JackBoosY Mar 2, 2021
e7361b1
[g3log] update to 1.3.4 (#16491)
JonLiu1993 Mar 2, 2021
395cb68
Update to Community resources (#16489)
Balnian Mar 2, 2021
c47216a
[vcpkg_*_cmake] remove deprecation message (#16480)
strega-nil Mar 3, 2021
0dc27b9
[vcpkg-cmake] Search for binaries after manifest-based installs (#16605)
townsend2010 Mar 8, 2021
52aeb54
[lua] Update to version 5.4.2 (#16603)
frankhale Mar 10, 2021
2b20b27
[docs] Fix the automatically generated document URL (#16611)
JackBoosY Mar 10, 2021
8fe4184
[proj4] Copy over proj.pdb file on install (#15985)
stefanuhrig Mar 10, 2021
16df4a5
[cpp-httplib] Upgrade to v0.8.4 (#16591)
tosone Mar 10, 2021
1ff8bc0
[krabsetw] Update krabsetw to 4.1.18 (#16576)
jrave Mar 10, 2021
df574ba
[sentry-native] Update to 0.4.8 (#16550)
AenBleidd Mar 10, 2021
860c3c3
[trantor] Update to 1.3.0 (#16568)
an-tao Mar 10, 2021
37a8f41
[geos] Bump to 3.9.1 (#16572)
m-kuhn Mar 10, 2021
f5bfe6d
[wil] Updating WIL version to match its nuget package version (#16575)
anaaru Mar 10, 2021
18376a2
[openssl] update to 1.1.1j (#16525)
metsma Mar 10, 2021
c10cae3
[docs] Fix typo in docs/index.md (#16522)
sbc100 Mar 10, 2021
f1d190a
[crow] update to 0.2 (CrowCpp/crow fork) (#16511)
JonLiu1993 Mar 10, 2021
1eb9348
[fplus] update to v0.2.13-p0 (#16510)
JonLiu1993 Mar 10, 2021
aac436a
[scintilla] update to 4.4.6 (#16508)
JonLiu1993 Mar 10, 2021
c3c7707
[uWebSockets] update to 19.0.0 (#16496)
JonLiu1993 Mar 10, 2021
d3c432d
[hiredis] Fix include path (#16512)
NancyLi1013 Mar 10, 2021
77cb269
Don't copy svm-toy if not on Windows (#16501)
SoftwareApe Mar 10, 2021
9e1be5a
[mongoose] update to 7.1 (#16493)
JonLiu1993 Mar 10, 2021
cea2b12
[msix] Add DISABLE_PARALLEL_CONFIGURE (#16488)
NancyLi1013 Mar 10, 2021
02daf01
[Azure pipeline] Upload file list logs for unstable testing (#16492)
PhoebeHui Mar 10, 2021
ce17802
[liblsl] Update to 1.14.0 (#16461)
chausner Mar 10, 2021
2457130
[boost-context] fix build result on apple arm (#16482)
autoantwort Mar 10, 2021
6ee0e91
[libmysql] Re-fix dependency openssl (#16426)
JackBoosY Mar 10, 2021
fe2a6bb
[host dependencies] add support in the scripts (#16627)
strega-nil Mar 10, 2021
8010840
[docs/users/binarycaching.md] a little blurb about using GCS (#16337)
coryan Mar 11, 2021
d40ea29
[taglib] Upgrade from 1.12-beta-2 to 1.12 (#16649)
uklotzde Mar 11, 2021
f2ae282
[hazelcast-cpp-client] New version update to 4.0.1 (#16593)
ihsandemir Mar 11, 2021
2543be2
[pangolin] Fix static build error (#15593)
NancyLi1013 Mar 11, 2021
4634989
[harfbuzz] work around upstream SameFileError (#16621)
Krzmbrzl Mar 11, 2021
71c7aa7
[Azure-Kinect-Sensor-SDK] update to 1.41 (#16548)
JonLiu1993 Mar 11, 2021
939c215
[popsift] add new port v0.9 (#10979)
simogasp Mar 11, 2021
eb41906
[libtorrent] update to 1.2.12 (#15620)
JonLiu1993 Mar 11, 2021
3c7a12b
[many ports] Add GnuTLS and its dependencies (#14242)
wrobelda Mar 11, 2021
75522bb
[docs] Improve inter-document linking; add 'latest' links (#16502)
ras0219 Mar 12, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion docs/examples/manifest-mode-cmake.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Manifest Mode: CMake Example

We would like to add vcpkg manifest support to an existing cmake project!
We would like to add [vcpkg manifest support](../users/manifests.md) to an existing cmake project!
Let's create a simple project that prints the fibonacci sequence up to a certain number,
using some common dependencies.

Expand Down
190 changes: 190 additions & 0 deletions docs/examples/modify-baseline-to-pin-old-boost.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
# Pin old Boost versions
This document will teach you how to set versions of meta-packages like `boost` or `qt5`.

**What is a meta-package?**
In vcpkg we call meta-packages to ports that by themselves don't install anything but that instead forward installation to another port or ports. The reasons for these meta-packages to exist are plenty: to install different versions of a library depending on platform (like the old OpenSSL port did), to allow for multiple versions to exist in the vcpkg registry at the same time (OpenCV), or to conveniently install/uninstall a catalog of related packages (Boost and Qt).

In the case of Boost, it is unlikely that a user requires all of the 140+ Boost libraries in their project. For the sake of convenience, vcpkg splits Boost into multiple sub-packages broken down to individual libraries. By doing so, users can limit the subset of Boost libraries that they depend on.

If a user wants to install all of the Boost libraries available in vcpkg, they can do so by installing the `boost` meta-package.

Due to the nature of meta-packages, some unexpected issues arise when trying to use them with versioning. If a user writes the following manifest file:

`vcpkg.json`
```json
{
"name": "demo",
"version": "1.0.0",
"builtin-baseline": "787fe1418ea968913cc6daf11855ffd8b0b5e9d4",
"dependencies": [ "boost-tuple" ],
"overrides": [
{ "name": "boost", "version": "1.72.0" }
]
}
```

The resulting installation plan is:
```
The following packages will be built and installed:
boost-assert[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-assert\3393715b4ebe30fe1c3b68acf7f84363e611f156
boost-compatibility[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-compatibility\cda5675366367789659c59aca65fc57d03c51deb
boost-config[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-config\ca82ca1b9c1739c91f3cf42c68cee56c896ae6bd
boost-container-hash[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-container-hash\bf472c23d29c3d80b562c43471eb92cea998f372
boost-core[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-core\20a19f6ece37686a02eed33e1f58add8b7a2582a
boost-detail[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-detail\96744251f025f9b3c856a275dfc338031876777b
boost-integer[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-integer\de70ce0d1500df1eda3496c4f98f42f5db256b4a
boost-io[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-io\7bf3407372f8fc2a99321d24a0e952d44fe25bf3
boost-preprocessor[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-preprocessor\8d78b8ba2e9f54cb00137115ddd2ffec1c63c149
boost-static-assert[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-static-assert\2a41c4703c7122de25b1c60510c43edc9371f63d
boost-throw-exception[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-throw-exception\b13bdf32a20786a0165cc20205ef63765cac0627
boost-tuple[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-tuple\22e3d000a178a88992c430d8ae8a0244c7dea674
boost-type-traits[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-type-traits\8829793f6c6c913257314caa317599f8d253a5ca
boost-uninstall[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-uninstall\08933bad27b6d41caef0940c31e2069ecb6a079c
boost-utility[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-utility\47572946bf6a63c731b9c4142eecb8bef3d3b270
boost-vcpkg-helpers[core]:x64-windows -> 7#2 -- D:\vcpkg\buildtrees\versioning\versions\boost-vcpkg-helpers\2a21e5ab45d1ce41c185faf85dff0670ea6def1d
```

It is reasonable to expect that overriding `boost` to version 1.72.0 results in all Boost packages being pinned to version 1.72.0. **However, vcpkg does not treat the `boost` meta-package any differently that any other port.** In other words, vcpkg has no notion that `boost` is related to all the other `boost-*` libraries, other than it depends on all of them. For this reason, all the other boost packages are installed at version 1.75.0, which is the baseline version.

Below, we describe two methods to pin down Boost versions effectively.

## Method 1: Pin specific packages
Use `"overrides"` to force specific versions in a package-by-package basis.

`vcpkg.json`
```json
{
"name": "demo",
"version": "1.0.0",
"builtin-baseline": "787fe1418ea968913cc6daf11855ffd8b0b5e9d4",
"dependencies": [ "boost-tuple" ],
"overrides": [
{ "name": "boost-core", "version": "1.72" },
{ "name": "boost-integer", "version": "1.72" },
{ "name": "boost-io", "version": "1.72" },
{ "name": "boost-tuple", "version": "1.72" }
]
}
```

This method allows you to quickly set the specific versions you want, but you will need to write an override for each package. Boost libraries are also heavily interdependent, which means that you may end up writing a lot of override lines.

The second method makes it easy to pin the entire Boost collection and end up with a very simple manifest file.

## Method 2: Modify baseline
An easy way to set the version for the entirety of boost is to use the `"builtin-baseline"` property.

As of right now, it is only possible to go back to Boost version `1.75.0` using a baseline. Since that was the contemporary Boost version when the versioning feature was merged. **But, it is possible to modify the baseline to whatever you like and use that instead.**

### Step 1: Create a new branch
As described in the versioning documentation. The value that goes in `"builtin-baseline"` is a Git commit in the vcpkg repository's history. Then it stands to reason, that if you want to customize the baseline you should be able to create a new commit with said custom baseline.

Let's start by creating a new branch to hold our modified baseline.
In the directory containing your clone of the vcpkg Git repository run:

```
git checkout -b custom-boost-baseline
```

This will create a new branch named `custom-boost-baseline` and check it out immediately.

### Step 2: Modify the baseline
The next step is to modify the baseline file, open the file in your editor of choice and modify the entries for the Boost libraries.

Change the `"baseline"` version to your desired version.
_NOTE: Remember to also set the port versions to 0 (or your desired version)._

`${vcpkg-root}/versions/baseline.json`
```diff
...
"boost": {
- "baseline": "1.75.0",
+ "baseline": "1.72.0",
"port-version": 0
},
"boost-accumulators": {
- "baseline": "1.75.0",
- "port-version": 1
+ "baseline": "1.72.0",
+ "port-version": 0
},
"boost-algorithm": {
- "baseline": "1.75.0",
+ "baseline": "1.72.0",
"port-version": 0
},
"boost-align": {
- "baseline": "1.75.0",
+ "baseline": "1.72.0",
"port-version": 0
},
...
"boost-uninstall: {
"baseline": "1.75.0",
"port-version": 0
},
...
```

Some `boost-` packages are helpers used by vcpkg and are not part of Boost. For example, `"boost-uninstall"` is a vcpkg helper to conveniently uninstall all Boost libraries, but it didn't exist for Boost version `1.72.0`, in this case it is fine to leave it at `1.75.0` to avoid baseline errors (since all versions in `baseline.json` must have existed).

### Step 3: Commit your changes
After saving your modified file, run these commands to commit your changes:

```
git add versions/baseline.json
git commit -m "Baseline Boost 1.72.0"
```

You can set the commit message to whatever you want, just make it useful for you.

### Step 4: Get your baseline commit SHA
Once all your changes are ready, you can get the commit SHA by running:
```
git rev-parse HEAD
```

The output of that command will be the commit SHA you need to put as the `"builtin-baseline"` in your project's manifest file. Copy the 40-hex digits and save them to use later in your manifest file.

### Step 5: (Optional) Go back to the main repository branch
Once your changes have been commited locally, you can refer to the commit SHA regardless of the repository branch you're working on. So, let's go back to the main vcpkg repository branch.

```
git checkout master
```

### Step 6: Create your manifest file with your custom baseline

```json
{
"name": "demo",
"version": "1.0.0",
"builtin-baseline": "9b5cf7c3d9376ddf43429671282972ec4f99aa85",
"dependencies": [ "boost-tuple" ]
}
```

In this example, commit SHA `9b5cf7c3d9376ddf43429671282972ec4f99aa85` is the commit ID with the modified baseline. Even when a different branch (`master` in this case) is checked out, Git is able to find the commit as long as the branch with the modified baseline exists (the `custom-boost-baseline` branch we created in step 1).

We run `vcpkg --feature-flags="manifests,versions" install` in the directory containing our manifest file and the output looks like this:

```
The following packages will be built and installed:
boost-assert[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-assert\6754398591f48435b28014ca0d60e5375a4c04d1
boost-compatibility[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-compatibility\9893ff3c554575bc712df4108a949e07b269f401
boost-config[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-config\de2784767046b06ec31eb718f10df512e51f2aad
boost-container-hash[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-container-hash\cc19fb0154bbef188f309f49b2664ec7623b96b6
boost-core[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-core\0eb5e20df9e267e9eca325be946f52ceb8a60229
boost-detail[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-detail\759d7c6a3f9dbaed0b0c69fa0bb764f7606bb02d
boost-integer[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-integer\173956c61a26e83b0f8b58b0baf60f06aeee637c
boost-preprocessor[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-preprocessor\86eb3938b7875f124feb845331dbe84cbab5d1c6
boost-static-assert[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-static-assert\e82d8f7f3ee07e927dc374f5a08ed6d6f4ef81f4
boost-throw-exception[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-throw-exception\64df295f7df41de4fcb219834889b126b5020def
boost-tuple[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-tuple\b3e1b01ffce6e367e4fed0a5538a8546abacb6b2
boost-type-traits[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-type-traits\5e44ec657660eccf4d3b2710b092dd238e1e7a2d
boost-uninstall[core]:x64-windows -> 1.75.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-uninstall\08933bad27b6d41caef0940c31e2069ecb6a079c
boost-utility[core]:x64-windows -> 1.72.0 -- D:\vcpkg\buildtrees\versioning\versions\boost-utility\7d721b2458d5d595ac341eb54883274f38a4b8c2
boost-vcpkg-helpers[core]:x64-windows -> 7#2 -- D:\vcpkg\buildtrees\versioning\versions\boost-vcpkg-helpers\2a21e5ab45d1ce41c185faf85dff0670ea6def1d
```

Notice how simple our manifest file has become, instead of having a multitude of `"overrides"` you can pin down all Boost packages just by setting the `"builtin-baseline"` to be your modified baseline commit SHA.
Original file line number Diff line number Diff line change
@@ -1,22 +1,43 @@
# Getting started with versioning

**The latest version of this documentation is available on [GitHub](https://github.com/Microsoft/vcpkg/tree/master/docs/examples/versioning.getting-started.md).**

Vcpkg lets you take control of which version of packages to install in your projects using manifests.

## Enabling versions

To start using the versioning feature, first you need to enable the `versions` feature flag in any of the following manners:
To start using [versioning](../users/versioning.md), first you need to enable the `versions` feature flag in any of the following manners:

* Setting the `VCPKG_FEATURE_FLAGS` environment variable.
* Setting the `VCPKG_FEATURE_FLAGS` environment variable

```PowerShell
# Example for PowerShell
$env:VCPKG_FEATURE_FLAGS="versions"
./vcpkg install
```
```bash
# Example for bash
export VCPKG_FEATURE_FLAGS=versions
```
```cmd
REM Example for cmd
SET VCPKG_FEATURE_FLAGS=versions
```

* Passing the feature flags in the vcpkg command line.
```PowerShell
./vcpkg --feature-flags="versions" install
* Passing the feature flags in the vcpkg command line
```bash
./vcpkg install --feature-flags=versions
```

* Setting `VCPKG_FEATURE_FLAGS` before your `project()` CMake directive
```cmake
set(VCPKG_FEATURE_FLAGS versions)
project(myapp)
```
* Setting `VcpkgAdditionalInstallOptions` (Project Properties -> Vcpkg -> Additional Options) in your MSBuild project
```xml
<PropertyGroup>
<VcpkgAdditionalInstallOptions>--feature-flags=versions</VcpkgAdditionalInstallOptions>
</PropertyGroup>
```

## Using versions with manifests
Expand All @@ -28,7 +49,7 @@ Let's start with creating a simple CMake project that depends on `fmt` and `zlib
Create a folder with the following files:

**vcpkg.json**
```
```json
{
"name": "versions-test",
"version": "1.0.0",
Expand Down Expand Up @@ -61,7 +82,7 @@ int main()
```CMake
cmake_minimum_required(VERSION 3.18)

project(versions-test CXX)
project(versionstest CXX)

add_executable(main main.cpp)

Expand Down Expand Up @@ -109,42 +130,40 @@ fmt[core]:x86-windows -> 7.1.3 -- D:\vcpkg\buildtrees\versioning\versions\fmt\dd
zlib[core]:x86-windows -> 1.2.11#9 -- D:\vcpkg\buildtrees\versioning\versions\zlib\827111046e37c98153d9d82bb6fa4183b6d728e4
```

Instead of using the portfiles in `ports/`; vcpkg is checking out the files for each version in `buildtrees/versioning/versions/`. The files in `ports/` are still used when running vcpkg in classic mode or when the `versions` feature flag is disabled.
Instead of using the portfiles in `ports/`, vcpkg is checking out the files for each version in `buildtrees/versioning/versions/`. The files in `ports/` are still used when running vcpkg in classic mode or when the `versions` feature flag is disabled.

_NOTE: Output from the vcpkg while configuring CMake is only available when using CMake version `3.18` or newer. If you're using an older CMake you can check the `vcpkg-manifest-install.log` file in your build directory instead._
_NOTE: Output from vcpkg while configuring CMake is only available when using CMake version `3.18` or newer. If you're using an older CMake you can check the `vcpkg-manifest-install.log` file in your build directory instead._

Read our [manifests announcement blog post](https://devblogs.microsoft.com/cppblog/vcpkg-accelerate-your-team-development-environment-with-binary-caching-and-manifests/#using-manifests-with-msbuild-projects) to learn how to use manifests with MSBuild.

### Manifest changes
If you have used manifests before you will notice that there are some new JSON properties. Let's review these changes:

* **`version`**
```
#### **`version`**
```json
{
"name": "versions-test",
"version": "1.0.0",
...
"version": "1.0.0"
}
```

This is your project's version declaration. Previously, you could only declare versions for your projects using the `version-string` property. Now that versioning has come around, vcpkg is aware of some new versioning schemes.

Version scheme | Description
-- | --
`version` | Dot-separated numerics: `1.0.0`.
Version scheme | Description
---------------- | ---------------
`version` | Dot-separated numerics: `1.0.0.5`.
`version-semver` | Compliant [semantic versions](https://semver.org): `1.2.0` and `1.2.0-rc`.
`version-date` | Dates in `YYYY-MM-DD` format: `2021-01-01`
`version-date` | Dates in `YYYY-MM-DD` format: `2021-01-01`
`version-string` | Arbitrary strings: `vista`, `candy`.

* **`version>=`**
```
"dependencies": [
{
"name": "fmt",
"version>=": "7.1.3"
},
"zlib"
],
#### **`version>=`**
```json
{
"dependencies": [
{ "name": "fmt", "version>=": "7.1.3" },
"zlib"
]
}
```

This property is used to express minimum version constraints, it is allowed only as part of the `"dependencies"` declarations. In our example we set an explicit constraint on version `7.1.3` of `fmt`.
Expand All @@ -155,15 +174,15 @@ Vcpkg uses a minimum version approach, in our example, even if `fmt` version `8.

If you want to upgrade your dependencies, you can bump the minimum version constraint or use a newer baseline.

* **`builtin-baseline`**
#### **`builtin-baseline`**

```
"builtin-baseline": "b60f003ccf5fe8613d029f49f835c8929a66eb61"
```

This field declares the versioning baseline for all ports. Setting a baseline is required to enable versioning, otherwise you will get the current versions on the ports directory. You can run 'git rev-parse HEAD' to get the current commit of vcpkg and set it as the builtin-baseline. But what is a baseline? What does it do? Why is the value a SHA?

From the [versioning documentation](versioning.md):
From the [versioning documentation](../users/versioning.md):

> The baseline references a commit within the vcpkg repository that
establishes a minimum version on every dependency in the graph. If
Expand Down Expand Up @@ -197,7 +216,7 @@ Baselines are also a convenient mechanism to upgrade multiple versions at a time

But what if you want to pin a version older than the baseline?

* **`overrides`**
#### **`overrides`**

Since baselines establish a version floor for all packages and explicit constraints get upgraded when they are lower than the baseline, we need another mechanism to downgrade versions past the baseline.

Expand Down Expand Up @@ -264,11 +283,11 @@ If you want to have flexible port customization along with versioning features,

## Further reading

If you're interested in delving deeper into the details of how versioning works we recommended that you read the [original versioning specification](../specifications/versioning.md) and the [implementation details](versioning.implementation-details.md).
If you're interested in delving deeper into the details of how versioning works we recommended that you read the [original versioning specification](../specifications/versioning.md) and the [implementation details](../users/versioning.implementation-details.md).

See also:

* [Versioning docs](versioning.md)
* [Versioning docs](../users/versioning.md)
* [Original specification](../specifications/versioning.md)
* [Versioning reference](versioning.reference.md)
* [Versioning implementation details](versioning.implementation-details.md)
* [Versioning reference](../users/versioning.reference.md)
* [Versioning implementation details](../users/versioning.implementation-details.md)
Loading