3.20.0-rc1: Build and test presets usage inconsistent with configure presets
According to https://cmake.org/cmake/help/latest/manual/cmake.1.html configuring a project using presets is done by calling cmake --preset=<preset> ...
.
Building a project is done using cmake --build --preset <preset> ...
(Note the missing =
), which essentially seems to be an undocumented feature.
Nevertheless configuring a project works also without the =
: cmake --preset <preset> ...
, but building with =
does not: cmake --build --preset=<preset> ...
fails.
This is really inconsistent. My suggestion is to make --prefix
accept the =
in every case or make the usage for configure and build (and most probably test as well) consistent.
CMakePresets.json and CMakeLists.txt
{
"version": 2,
"cmakeMinimumRequired": {
"major": 3,
"minor": 20,
"patch": 0
},
"configurePresets": [
{
"name": "default",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build"
}
],
"buildPresets": [
{
"name": "build-default",
"configurePreset": "default"
}
]
}
cmake_minimum_required(VERSION 3.20)
project(PresetTest NONE)
$ cmake --version
cmake version 3.20.20210222-g9e1fe1f
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ cmake --preset=default
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/cmake/build
$ cmake --preset default
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/cmake/build
$ cmake --build --preset=build-default
Error: /tmp/cmake/--preset=build-default is not a directory
$ cmake --build --preset build-default
ninja: no work to do.
$
Edited by Brad King