From 875b58e0941ef62a75992ce0e6496bb7879e0bbe Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Mon, 19 Sep 2022 10:58:26 +0200 Subject: [PATCH] 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 --- .gitignore | 2 + CMakePresets.json | 95 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 CMakePresets.json diff --git a/.gitignore b/.gitignore index 11479346c7..be43c5cd90 100644 --- a/.gitignore +++ b/.gitignore @@ -73,3 +73,5 @@ tags # vim patches /vim-*.patch + +/CMakeUserPresets.json diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000000..b2c93792b0 --- /dev/null +++ b/CMakePresets.json @@ -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" + } + } + ] +}