build: add basic cmake-presets integration (#19128)

This allows a more declarative way of defining targets which may be easier to those not familiar with cmake quirks.

Example usage:

# get a list of pre-configured presets
cmake --list-presets

# configure a preset
cmake . --preset=default

# build it
cmake --build --preset=default
This commit is contained in:
kylo252 2022-09-19 10:58:26 +02:00 committed by GitHub
parent 7a091fdfaf
commit 875b58e094
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 97 additions and 0 deletions

2
.gitignore vendored
View File

@ -73,3 +73,5 @@ tags
# vim patches
/vim-*.patch
/CMakeUserPresets.json

95
CMakePresets.json Normal file
View File

@ -0,0 +1,95 @@
{
"version": 3,
"configurePresets": [
{
"name": "base",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"hidden": true
},
{
"name": "default",
"displayName": "RelWithDebInfo",
"description": "Enables optimizations (-Og or -O2) with debug information",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
},
"inherits": [
"base"
]
},
{
"name": "debug",
"displayName": "Debug",
"description": "Disables optimizations (-O0), enables debug information",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
},
"inherits": [
"base"
]
},
{
"name": "release",
"displayName": "Release",
"description": "Same as RelWithDebInfo, but disables debug information",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
},
"inherits": [
"base"
]
},
{
"name": "windows-default",
"displayName": "Windows x64 RelWithDebInfo",
"description": "Sets Ninja generator, enables optimizations with debug information for x64",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
},
"architecture": {
"value": "x64",
"strategy": "external"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"hostOS": [
"Windows"
]
}
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"inherits": [
"base"
]
}
],
"buildPresets": [
{
"name": "default",
"configurePreset": "default"
},
{
"name": "debug",
"configurePreset": "debug"
},
{
"name": "release",
"configurePreset": "release"
},
{
"name": "windows-default",
"configurePreset": "windows-default",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
}
]
}