From 5b8635dd4c81c0d2adab4de21f2cfe576f9bc3ed Mon Sep 17 00:00:00 2001 From: Template Janitor Date: Sun, 22 May 2022 10:25:26 +0000 Subject: [PATCH 1/8] Change Template Name --- .github/template/template_name | 2 +- .github/template/template_repository | 2 +- README.md | 14 +++++++------- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/template/template_name b/.github/template/template_name index b4857fcb..9f9b489e 100644 --- a/.github/template/template_name +++ b/.github/template/template_name @@ -1 +1 @@ -cmake_conan_boilerplate_template +cpp_boilerplate_project diff --git a/.github/template/template_repository b/.github/template/template_repository index efbdeb18..fc9336c3 100644 --- a/.github/template/template_repository +++ b/.github/template/template_repository @@ -1 +1 @@ -cpp-best-practices/cmake_conan_boilerplate_template +Jason5480/cpp_boilerplate_project diff --git a/README.md b/README.md index 8b9af443..0aa24486 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# cmake_conan_boilerplate_template +# cpp_boilerplate_project -[![ci](https://github.com/cpp-best-practices/cmake_conan_boilerplate_template/actions/workflows/ci.yml/badge.svg)](https://github.com/cpp-best-practices/cmake_conan_boilerplate_template/actions/workflows/ci.yml) -[![codecov](https://codecov.io/gh/cpp-best-practices/cmake_conan_boilerplate_template/branch/main/graph/badge.svg)](https://codecov.io/gh/cpp-best-practices/cmake_conan_boilerplate_template) -[![Language grade: C++](https://img.shields.io/lgtm/grade/cpp/github/cpp-best-practices/cmake_conan_boilerplate_template)](https://lgtm.com/projects/g/cpp-best-practices/cmake_conan_boilerplate_template/context:cpp) -[![CodeQL](https://github.com/cpp-best-practices/cmake_conan_boilerplate_template/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/cpp-best-practices/cmake_conan_boilerplate_template/actions/workflows/codeql-analysis.yml) +[![ci](https://github.com/Jason5480/cpp_boilerplate_project/actions/workflows/ci.yml/badge.svg)](https://github.com/Jason5480/cpp_boilerplate_project/actions/workflows/ci.yml) +[![codecov](https://codecov.io/gh/Jason5480/cpp_boilerplate_project/branch/main/graph/badge.svg)](https://codecov.io/gh/Jason5480/cpp_boilerplate_project) +[![Language grade: C++](https://img.shields.io/lgtm/grade/cpp/github/Jason5480/cpp_boilerplate_project)](https://lgtm.com/projects/g/Jason5480/cpp_boilerplate_project/context:cpp) +[![CodeQL](https://github.com/Jason5480/cpp_boilerplate_project/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/Jason5480/cpp_boilerplate_project/actions/workflows/codeql-analysis.yml) -## About cmake_conan_boilerplate_template +## About cpp_boilerplate_project This is a C++ Best Practices GitHub template for getting up and running with C++ quickly. @@ -36,7 +36,7 @@ Ths Boilerplate project will merge new features first, then they will be merged ### Use the Github template First, click the green `Use this template` button near the top of this page. -This will take you to Github's ['Generate Repository'](https://github.com/cpp-best-practices/cmake_conan_boilerplate_template/generate) page. +This will take you to Github's ['Generate Repository'](https://github.com/Jason5480/cpp_boilerplate_project/generate) page. Fill in a repository name and short description, and click 'Create repository from template'. This will allow you to create a new repository in your Github account, prepopulated with the contents of this project. From da3837ab7e23dcd4231a72866737e24b9c4e62c6 Mon Sep 17 00:00:00 2001 From: Iason Nikolas Date: Fri, 1 Apr 2022 11:04:16 +0300 Subject: [PATCH 2/8] Add MinSizeRel preset (+8 squashed commit) Squashed commit: [c64694d] Rename the linux presets to unixlike [0a57a97] Add binaryDir and installDir to be used in case of cli [ad5a3e7] Move mode options to CMakeUserPresets.json file [1c0fa00] Make hidden preset for each supported compiler/toolchain and reuse them in not hidden presets using "inherits" list. This way we the future changes will be applied only to the preset that is responsible for that functionality. [607a69f] Set "Ninja Multi-Config" generator as the default. Add buildPresets for Debug and Release. Modify testPresets accordingly [a98c295] Create separate developer and user mode hidden presets and use inherits to compose them to the non-hidden presets [e26f74c] replace conf- with config- in preset names [802e988] Let the IDE to set the default binary and install directories --- CMakePresets.json | 301 +++++++++++++++++++++++------------------- CMakeUserPresets.json | 106 +++++++++++++++ 2 files changed, 274 insertions(+), 133 deletions(-) create mode 100644 CMakeUserPresets.json diff --git a/CMakePresets.json b/CMakePresets.json index 5871489e..911d800a 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -7,18 +7,18 @@ }, "configurePresets": [ { - "name": "conf-common", + "name": "config-common", "description": "General settings that apply to all configurations", "hidden": true, - "generator": "Ninja", + "generator": "Ninja Multi-Config", "binaryDir": "${sourceDir}/out/build/${presetName}", "installDir": "${sourceDir}/out/install/${presetName}" }, { - "name": "conf-windows-common", + "name": "config-windows-common", "description": "Windows settings for MSBuild toolchain that apply to msvc and clang", "hidden": true, - "inherits": "conf-common", + "inherits": "config-common", "condition": { "type": "equals", "lhs": "${hostSystemName}", @@ -38,10 +38,10 @@ } }, { - "name": "conf-unixlike-common", + "name": "config-unixlike-common", "description": "Unix-like OS settings for gcc and clang toolchains", "hidden": true, - "inherits": "conf-common", + "inherits": "config-common", "condition": { "type": "inList", "string": "${hostSystemName}", @@ -57,62 +57,21 @@ } }, { - "name": "windows-msvc-debug-developer-mode", - "displayName": "msvc Debug (Developer Mode)", - "description": "Target Windows with the msvc compiler, debug build type", - "inherits": "conf-windows-common", - "cacheVariables": { - "CMAKE_C_COMPILER": "cl", - "CMAKE_CXX_COMPILER": "cl", - "CMAKE_BUILD_TYPE": "Debug", - "ENABLE_DEVELOPER_MODE": "ON" - } - }, - { - "name": "windows-msvc-release-developer-mode", - "displayName": "msvc Release (Developer Mode)", - "description": "Target Windows with the msvc compiler, release build type", - "inherits": "conf-windows-common", - "cacheVariables": { - "CMAKE_C_COMPILER": "cl", - "CMAKE_CXX_COMPILER": "cl", - "CMAKE_BUILD_TYPE": "RelWithDebInfo", - "ENABLE_DEVELOPER_MODE": "ON" - } - }, - { - "name": "windows-msvc-debug-user-mode", - "displayName": "msvc Debug (User Mode)", - "description": "Target Windows with the msvc compiler, debug build type", - "inherits": "conf-windows-common", - "cacheVariables": { - "CMAKE_C_COMPILER": "cl", - "CMAKE_CXX_COMPILER": "cl", - "CMAKE_BUILD_TYPE": "Debug", - "ENABLE_DEVELOPER_MODE": "OFF" - } - }, - { - "name": "windows-msvc-release-user-mode", - "displayName": "msvc Release (User Mode)", - "description": "Target Windows with the msvc compiler, release build type", - "inherits": "conf-windows-common", + "name": "config-msvc-compiler", + "description": "Set cl as the compiler to be used", + "hidden": true, "cacheVariables": { "CMAKE_C_COMPILER": "cl", - "CMAKE_CXX_COMPILER": "cl", - "CMAKE_BUILD_TYPE": "RelWithDebInfo", - "ENABLE_DEVELOPER_MODE": "OFF" + "CMAKE_CXX_COMPILER": "cl" } }, { - "name": "windows-clang-debug", - "displayName": "clang Debug", - "description": "Target Windows with the clang compiler, debug build type", - "inherits": "conf-windows-common", + "name": "config-clangcl-compiler", + "description": "Set clang-cl as the compiler to be used", + "hidden": true, "cacheVariables": { "CMAKE_C_COMPILER": "clang-cl", - "CMAKE_CXX_COMPILER": "clang-cl", - "CMAKE_BUILD_TYPE": "Debug" + "CMAKE_CXX_COMPILER": "clang-cl" }, "vendor": { "microsoft.com/VisualStudioSettings/CMake/1.0": { @@ -121,64 +80,126 @@ } }, { - "name": "windows-clang-release", - "displayName": "clang Release", - "description": "Target Windows with the clang compiler, release build type", - "inherits": "conf-windows-common", + "name": "config-gcc-compiler", + "description": "Set gcc as the compiler to be used", + "hidden": true, "cacheVariables": { - "CMAKE_C_COMPILER": "clang-cl", - "CMAKE_CXX_COMPILER": "clang-cl", - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - }, - "vendor": { - "microsoft.com/VisualStudioSettings/CMake/1.0": { - "intelliSenseMode": "windows-clang-x64" - } + "CMAKE_C_COMPILER": "gcc", + "CMAKE_CXX_COMPILER": "g++" } }, { - "name": "unixlike-gcc-debug", - "displayName": "gcc Debug", - "description": "Target Unix-like OS with the gcc compiler, debug build type", - "inherits": "conf-unixlike-common", + "name": "config-clang-compiler", + "description": "Set clang as the compiler to be used", + "hidden": true, "cacheVariables": { - "CMAKE_C_COMPILER": "gcc", - "CMAKE_CXX_COMPILER": "g++", - "CMAKE_BUILD_TYPE": "Debug" + "CMAKE_C_COMPILER": "clang", + "CMAKE_CXX_COMPILER": "clang++" } }, { - "name": "unixlike-gcc-release", - "displayName": "gcc Release", - "description": "Target Unix-like OS with the gcc compiler, release build type", - "inherits": "conf-unixlike-common", - "cacheVariables": { - "CMAKE_C_COMPILER": "gcc", - "CMAKE_CXX_COMPILER": "g++", - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - } + "name": "windows-msvc", + "displayName": "msvc", + "description": "Target Windows with the msvc compiler", + "inherits": [ + "config-windows-common", + "config-msvc-compiler" + ] }, { - "name": "unixlike-clang-debug", - "displayName": "clang Debug", - "description": "Target Unix-like OS with the clang compiler, debug build type", - "inherits": "conf-unixlike-common", - "cacheVariables": { - "CMAKE_C_COMPILER": "clang", - "CMAKE_CXX_COMPILER": "clang++", - "CMAKE_BUILD_TYPE": "Debug" - } + "name": "windows-clang", + "displayName": "clang", + "description": "Target Windows with the clang compiler", + "inherits": [ + "config-windows-common", + "config-clangcl-compiler" + ] }, { - "name": "unixlike-clang-release", - "displayName": "clang Release", - "description": "Target Unix-like OS with the clang compiler, release build type", - "inherits": "conf-unixlike-common", - "cacheVariables": { - "CMAKE_C_COMPILER": "clang", - "CMAKE_CXX_COMPILER": "clang++", - "CMAKE_BUILD_TYPE": "RelWithDebInfo" - } + "name": "unixlike-gcc", + "displayName": "gcc", + "description": "Target unix-like OS with the gcc compiler", + "inherits": [ + "config-unixlike-common", + "config-gcc-compiler" + ] + }, + { + "name": "unixlike-clang", + "displayName": "clang", + "description": "Target Unix-like OS with the clang compiler", + "inherits": [ + "config-unixlike-common", + "config-clang-compiler" + ] + } + ], + "buildPresets": [ + { + "name": "build-common-debug", + "description": "Set build type to Debug", + "hidden": true, + "configuration": "Debug" + }, + { + "name": "build-common-release", + "description": "Set build type to Release", + "hidden": true, + "configuration": "Release" + }, + { + "name": "build-common-relwithdebinfo", + "description": "Set build type to Release", + "hidden": true, + "configuration": "RelWithDebInfo" + }, + { + "name": "build-common-minsizerel", + "description": "Set build type to MinSizeRel", + "hidden": true, + "configuration": "MinSizeRel" + }, + { + "name": "windows-msvc-debug", + "displayName": "Debug", + "description": "Build msvc debug on windows", + "inherits": "build-common-debug", + "configurePreset": "windows-msvc" + }, + { + "name": "build-windows-msvc-release", + "displayName": "Release", + "description": "Build msvc release on windows", + "inherits": "build-common-release", + "configurePreset": "windows-msvc" + }, + { + "name": "build-unixlike-gcc-debug", + "displayName": "Debug", + "description": "Build gcc debug on unixlike OS", + "inherits": "build-common-debug", + "configurePreset": "unixlike-gcc" + }, + { + "name": "build-unixlike-gcc-release", + "displayName": "Release", + "description": "Build gcc release on unixlike OS", + "inherits": "build-common-release", + "configurePreset": "unixlike-gcc" + }, + { + "name": "build-unixlike-clang-debug", + "displayName": "Debug", + "description": "Build clang debug on unixlike OS", + "inherits": "build-common-debug", + "configurePreset": "unixlike-clang" + }, + { + "name": "build-unixlike-clang-release", + "displayName": "Release", + "description": "Build clang release on unixlike OS", + "inherits": "build-common-release", + "configurePreset": "unixlike-clang" } ], "testPresets": [ @@ -195,60 +216,74 @@ } }, { - "name": "test-windows-msvc-debug-developer-mode", - "displayName": "Strict", - "description": "Enable output and stop on failure", + "name": "test-common-debug", + "description": "Test CMake settings that apply to debug configurations", + "hidden": true, "inherits": "test-common", - "configurePreset": "windows-msvc-debug-developer-mode" + "configuration": "Debug" }, { - "name": "test-windows-msvc-release-developer-mode", - "displayName": "Strict", - "description": "Enable output and stop on failure", + "name": "test-common-release", + "description": "Test CMake settings that apply to release configurations", + "hidden": true, "inherits": "test-common", - "configurePreset": "windows-msvc-release-developer-mode" + "configuration": "Release" + }, + { + "name": "test-windows-msvc-debug", + "displayName": "Debug", + "description": "Set Strict rules for windows msvc debug tests", + "inherits": "test-common-debug", + "configurePreset": "windows-msvc" + }, + { + "name": "test-windows-msvc-release", + "displayName": "Release", + "description": "Set Strict rules for windows msvc release tests", + "inherits": "test-common-release", + "configurePreset": "windows-msvc" }, { "name": "test-windows-clang-debug", - "displayName": "Strict", - "description": "Enable output and stop on failure", - "inherits": "test-common", - "configurePreset": "windows-clang-debug" + "displayName": "Debug", + "description": "Set Strict rules for windows clang debug tests", + "inherits": "test-common-debug", + "configurePreset": "windows-clang" }, { "name": "test-windows-clang-release", - "displayName": "Strict", - "description": "Enable output and stop on failure", - "inherits": "test-common", - "configurePreset": "windows-clang-release" + "displayName": "Release", + "description": "Set Strict rules for windows clang release tests", + "inherits": "test-common-release", + "configurePreset": "windows-clang" }, { "name": "test-unixlike-gcc-debug", - "displayName": "Strict", - "description": "Enable output and stop on failure", - "inherits": "test-common", - "configurePreset": "unixlike-gcc-debug" + "displayName": "Debug", + "description": "Set Strict rules for unixlike gcc debug tests", + "inherits": "test-common-debug", + "configurePreset": "unixlike-gcc" }, { "name": "test-unixlike-gcc-release", - "displayName": "Strict", - "description": "Enable output and stop on failure", - "inherits": "test-common", - "configurePreset": "unixlike-gcc-release" + "displayName": "Release", + "description": "Set Strict rules for unixlike gcc release tests", + "inherits": "test-common-release", + "configurePreset": "unixlike-gcc" }, { "name": "test-unixlike-clang-debug", - "displayName": "Strict", - "description": "Enable output and stop on failure", - "inherits": "test-common", - "configurePreset": "unixlike-clang-debug" + "displayName": "Debug", + "description": "Set Strict rules for unixlike clang debug tests", + "inherits": "test-common-debug", + "configurePreset": "unixlike-clang" }, { "name": "test-unixlike-clang-release", - "displayName": "Strict", - "description": "Enable output and stop on failure", - "inherits": "test-common", - "configurePreset": "unixlike-clang-release" + "displayName": "Release", + "description": "Set Strict rules for unixlike clang release tests", + "inherits": "test-common-release", + "configurePreset": "unixlike-clang" } ] } \ No newline at end of file diff --git a/CMakeUserPresets.json b/CMakeUserPresets.json new file mode 100644 index 00000000..891dd47f --- /dev/null +++ b/CMakeUserPresets.json @@ -0,0 +1,106 @@ +{ + "version": 3, + "cmakeMinimumRequired": { + "major": 3, + "minor": 21, + "patch": 0 + }, + "configurePresets": [ + { + "name": "config-developer-mode", + "description": "Set the flags to enable the development mode", + "hidden": true, + "cacheVariables": { + "ENABLE_DEVELOPER_MODE": "ON" + } + }, + { + "name": "config-user-mode", + "description": "Set the flags to enable the user mode", + "hidden": true, + "cacheVariables": { + "ENABLE_DEVELOPER_MODE": "OFF" + } + }, + { + "name": "windows-msvc-developer", + "displayName": "msvc (Developer Mode)", + "description": "Target Windows with the msvc compiler using Developer Mode", + "inherits": [ + "config-windows-common", + "config-msvc-compiler", + "config-developer-mode" + ] + }, + { + "name": "windows-msvc-user", + "displayName": "msvc (User Mode)", + "description": "Target Windows with the msvc compiler using User Mode", + "inherits": [ + "config-windows-common", + "config-msvc-compiler", + "config-user-mode" + ] + } + ], + "buildPresets": [ + { + "name": "build-windows-msvc-developer-debug", + "displayName": "Debug", + "description": "Build msvc debug on windows (Developer Mode)", + "inherits": "build-common-debug", + "configurePreset": "windows-msvc-developer" + }, + { + "name": "build-windows-msvc-developer-release", + "displayName": "Release", + "description": "Build msvc release on windows (Developer Mode)", + "inherits": "build-common-release", + "configurePreset": "windows-msvc-developer" + }, + { + "name": "build-windows-msvc-user-debug", + "displayName": "Debug", + "description": "Build msvc debug on windows (User Mode)", + "inherits": "build-common-debug", + "configurePreset": "windows-msvc-user" + }, + { + "name": "build-windows-msvc-user-release", + "displayName": "Release", + "description": "Build msvc release on windows (User Mode)", + "inherits": "build-common-release", + "configurePreset": "windows-msvc-user" + } + ], + "testPresets": [ + { + "name": "test-windows-msvc-developer-debug", + "displayName": "Debug", + "description": "Set Strict rules for windows msvc (Developer Mode) debug tests", + "inherits": "test-common-debug", + "configurePreset": "windows-msvc-developer" + }, + { + "name": "test-windows-msvc-developer-release", + "displayName": "Release", + "description": "Set Strict rules for windows msvc (Developer Mode) release tests", + "inherits": "test-common-release", + "configurePreset": "windows-msvc-developer" + }, + { + "name": "test-windows-msvc-user-debug", + "displayName": "Debug", + "description": "Set Strict rules for windows msvc (User Mode) debug tests", + "inherits": "test-common-debug", + "configurePreset": "windows-msvc-user" + }, + { + "name": "test-windows-msvc-user-release", + "displayName": "Release", + "description": "Set Strict rules for windows msvc (User Mode) release tests", + "inherits": "test-common-release", + "configurePreset": "windows-msvc-user" + } + ] +} \ No newline at end of file From a5947d9073c4738ccd3f0c75124de228124f2098 Mon Sep 17 00:00:00 2001 From: Iason Nikolas Date: Wed, 6 Apr 2022 10:24:47 +0300 Subject: [PATCH 3/8] Add condition based on ${hostSystemName} on build and test Presets also to prevent clutter (+1 squashed commits) Squashed commits: [7f3630d] Keep it simple remove unecessary 'build-` and 'test-` prefixes to make life easier as @KlausKlein suggested here https://github.com/cpp-best-practices/cpp_boilerplate_project/issues/31#issuecomment-1089854981 --- CMakePresets.json | 168 ++++++++++++++++++++++++++++++++---------- CMakeUserPresets.json | 52 ++++++++++--- 2 files changed, 171 insertions(+), 49 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index 911d800a..ba34b526 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -39,7 +39,7 @@ }, { "name": "config-unixlike-common", - "description": "Unix-like OS settings for gcc and clang toolchains", + "description": "Unixlike OS settings for gcc and clang toolchains", "hidden": true, "inherits": "config-common", "condition": { @@ -118,7 +118,7 @@ { "name": "unixlike-gcc", "displayName": "gcc", - "description": "Target unix-like OS with the gcc compiler", + "description": "Target unixlike OS with the gcc compiler", "inherits": [ "config-unixlike-common", "config-gcc-compiler" @@ -127,7 +127,7 @@ { "name": "unixlike-clang", "displayName": "clang", - "description": "Target Unix-like OS with the clang compiler", + "description": "Target unixlike OS with the clang compiler", "inherits": [ "config-unixlike-common", "config-clang-compiler" @@ -136,20 +136,43 @@ ], "buildPresets": [ { - "name": "build-common-debug", + "name": "build-windows", + "description": "Windows common build settings", + "hidden": true, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + } + }, + { + "name": "build-unixlike", + "description": "Unixlike OS common build settings", + "hidden": true, + "condition": { + "type": "inList", + "string": "${hostSystemName}", + "list": [ + "Linux", + "Darwin" + ] + } + }, + { + "name": "build-debug", "description": "Set build type to Debug", "hidden": true, "configuration": "Debug" }, { - "name": "build-common-release", + "name": "build-release", "description": "Set build type to Release", "hidden": true, "configuration": "Release" }, { "name": "build-common-relwithdebinfo", - "description": "Set build type to Release", + "description": "Set build type to RelWithDebInfo", "hidden": true, "configuration": "RelWithDebInfo" }, @@ -163,42 +186,60 @@ "name": "windows-msvc-debug", "displayName": "Debug", "description": "Build msvc debug on windows", - "inherits": "build-common-debug", + "inherits": [ + "build-windows", + "build-debug" + ], "configurePreset": "windows-msvc" }, { - "name": "build-windows-msvc-release", + "name": "windows-msvc-release", "displayName": "Release", "description": "Build msvc release on windows", - "inherits": "build-common-release", + "inherits": [ + "build-windows", + "build-release" + ], "configurePreset": "windows-msvc" }, { - "name": "build-unixlike-gcc-debug", + "name": "unixlike-gcc-debug", "displayName": "Debug", "description": "Build gcc debug on unixlike OS", - "inherits": "build-common-debug", + "inherits": [ + "build-unixlike", + "build-debug" + ], "configurePreset": "unixlike-gcc" }, { - "name": "build-unixlike-gcc-release", + "name": "unixlike-gcc-release", "displayName": "Release", "description": "Build gcc release on unixlike OS", - "inherits": "build-common-release", + "inherits": [ + "build-unixlike", + "build-release" + ], "configurePreset": "unixlike-gcc" }, { - "name": "build-unixlike-clang-debug", + "name": "unixlike-clang-debug", "displayName": "Debug", "description": "Build clang debug on unixlike OS", - "inherits": "build-common-debug", + "inherits": [ + "build-unixlike", + "build-debug" + ], "configurePreset": "unixlike-clang" }, { - "name": "build-unixlike-clang-release", + "name": "unixlike-clang-release", "displayName": "Release", "description": "Build clang release on unixlike OS", - "inherits": "build-common-release", + "inherits": [ + "build-unixlike", + "build-release" + ], "configurePreset": "unixlike-clang" } ], @@ -216,73 +257,126 @@ } }, { - "name": "test-common-debug", + "name": "test-windows", + "description": "Windows common test settings", + "hidden": true, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Windows" + } + }, + { + "name": "test-unixlike", + "description": "Unixlike OS common test settings", + "hidden": true, + "condition": { + "type": "inList", + "string": "${hostSystemName}", + "list": [ + "Linux", + "Darwin" + ] + } + }, + { + "name": "test-debug", "description": "Test CMake settings that apply to debug configurations", "hidden": true, - "inherits": "test-common", "configuration": "Debug" }, { - "name": "test-common-release", + "name": "test-release", "description": "Test CMake settings that apply to release configurations", "hidden": true, - "inherits": "test-common", "configuration": "Release" }, { - "name": "test-windows-msvc-debug", + "name": "windows-msvc-debug", "displayName": "Debug", "description": "Set Strict rules for windows msvc debug tests", - "inherits": "test-common-debug", + "inherits": [ + "test-common", + "test-windows", + "test-debug" + ], "configurePreset": "windows-msvc" }, { - "name": "test-windows-msvc-release", + "name": "windows-msvc-release", "displayName": "Release", "description": "Set Strict rules for windows msvc release tests", - "inherits": "test-common-release", + "inherits": [ + "test-common", + "test-windows", + "test-release" + ], "configurePreset": "windows-msvc" }, { - "name": "test-windows-clang-debug", + "name": "windows-clang-debug", "displayName": "Debug", "description": "Set Strict rules for windows clang debug tests", - "inherits": "test-common-debug", + "inherits": [ + "test-common", + "test-windows", + "test-debug" + ], "configurePreset": "windows-clang" }, { - "name": "test-windows-clang-release", + "name": "windows-clang-release", "displayName": "Release", "description": "Set Strict rules for windows clang release tests", - "inherits": "test-common-release", + "inherits": [ + "test-common", + "test-windows", + "test-release" + ], "configurePreset": "windows-clang" }, { - "name": "test-unixlike-gcc-debug", + "name": "unixlike-gcc-debug", "displayName": "Debug", "description": "Set Strict rules for unixlike gcc debug tests", - "inherits": "test-common-debug", + "inherits": [ + "test-common", + "test-unixlike", + "test-debug" + ], "configurePreset": "unixlike-gcc" }, { - "name": "test-unixlike-gcc-release", + "name": "unixlike-gcc-release", "displayName": "Release", "description": "Set Strict rules for unixlike gcc release tests", - "inherits": "test-common-release", + "inherits": [ + "test-common", + "test-unixlike", + "test-release" + ], "configurePreset": "unixlike-gcc" }, { - "name": "test-unixlike-clang-debug", + "name": "unixlike-clang-debug", "displayName": "Debug", "description": "Set Strict rules for unixlike clang debug tests", - "inherits": "test-common-debug", + "inherits": [ + "test-common", + "test-unixlike", + "test-debug" + ], "configurePreset": "unixlike-clang" }, { - "name": "test-unixlike-clang-release", + "name": "unixlike-clang-release", "displayName": "Release", "description": "Set Strict rules for unixlike clang release tests", - "inherits": "test-common-release", + "inherits": [ + "test-common", + "test-unixlike", + "test-release" + ], "configurePreset": "unixlike-clang" } ] diff --git a/CMakeUserPresets.json b/CMakeUserPresets.json index 891dd47f..f34a72c2 100644 --- a/CMakeUserPresets.json +++ b/CMakeUserPresets.json @@ -45,31 +45,43 @@ ], "buildPresets": [ { - "name": "build-windows-msvc-developer-debug", + "name": "windows-msvc-developer-debug", "displayName": "Debug", "description": "Build msvc debug on windows (Developer Mode)", - "inherits": "build-common-debug", + "inherits": [ + "build-windows", + "build-debug" + ], "configurePreset": "windows-msvc-developer" }, { - "name": "build-windows-msvc-developer-release", + "name": "windows-msvc-developer-release", "displayName": "Release", "description": "Build msvc release on windows (Developer Mode)", - "inherits": "build-common-release", + "inherits": [ + "build-windows", + "build-release" + ], "configurePreset": "windows-msvc-developer" }, { - "name": "build-windows-msvc-user-debug", + "name": "windows-msvc-user-debug", "displayName": "Debug", "description": "Build msvc debug on windows (User Mode)", - "inherits": "build-common-debug", + "inherits": [ + "build-windows", + "build-debug" + ], "configurePreset": "windows-msvc-user" }, { - "name": "build-windows-msvc-user-release", + "name": "windows-msvc-user-release", "displayName": "Release", "description": "Build msvc release on windows (User Mode)", - "inherits": "build-common-release", + "inherits": [ + "build-windows", + "build-release" + ], "configurePreset": "windows-msvc-user" } ], @@ -78,28 +90,44 @@ "name": "test-windows-msvc-developer-debug", "displayName": "Debug", "description": "Set Strict rules for windows msvc (Developer Mode) debug tests", - "inherits": "test-common-debug", + "inherits": [ + "test-common", + "test-windows", + "test-debug" + ], "configurePreset": "windows-msvc-developer" }, { "name": "test-windows-msvc-developer-release", "displayName": "Release", "description": "Set Strict rules for windows msvc (Developer Mode) release tests", - "inherits": "test-common-release", + "inherits": [ + "test-common", + "test-windows", + "test-release" + ], "configurePreset": "windows-msvc-developer" }, { "name": "test-windows-msvc-user-debug", "displayName": "Debug", "description": "Set Strict rules for windows msvc (User Mode) debug tests", - "inherits": "test-common-debug", + "inherits": [ + "test-common", + "test-windows", + "test-debug" + ], "configurePreset": "windows-msvc-user" }, { "name": "test-windows-msvc-user-release", "displayName": "Release", "description": "Set Strict rules for windows msvc (User Mode) release tests", - "inherits": "test-common-release", + "inherits": [ + "test-common", + "test-windows", + "test-release" + ], "configurePreset": "windows-msvc-user" } ] From 6eb28dea1be7d5a391e94af01bb5633aec402282 Mon Sep 17 00:00:00 2001 From: Iason Nikolas Date: Wed, 6 Apr 2022 11:50:54 +0300 Subject: [PATCH 4/8] =?UTF-8?q?=EF=BB=BF#=20This=20is=20a=20combination=20?= =?UTF-8?q?of=202=20commits.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Keep some naming conventions consistent (+1 squashed commits) Squashed commits: [8252d13] Update documentation Keep some naming conventions consistent --- CMakePresets.json | 440 +++++++++++++++++++++++++++++++++--------- CMakeUserPresets.json | 134 ------------- README_building.md | 18 +- 3 files changed, 362 insertions(+), 230 deletions(-) delete mode 100644 CMakeUserPresets.json diff --git a/CMakePresets.json b/CMakePresets.json index ba34b526..a854e715 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -7,18 +7,17 @@ }, "configurePresets": [ { - "name": "config-common", - "description": "General settings that apply to all configurations", + "name": "ninja_multi", + "description": "Generator settings that apply to all configurations", "hidden": true, "generator": "Ninja Multi-Config", "binaryDir": "${sourceDir}/out/build/${presetName}", "installDir": "${sourceDir}/out/install/${presetName}" }, { - "name": "config-windows-common", + "name": "windows", "description": "Windows settings for MSBuild toolchain that apply to msvc and clang", "hidden": true, - "inherits": "config-common", "condition": { "type": "equals", "lhs": "${hostSystemName}", @@ -33,15 +32,14 @@ "strategy": "external" }, "cacheVariables": { - "ENABLE_CPPCHECK_DEFAULT": "FALSE", - "ENABLE_CLANG_TIDY_DEFAULT": "FALSE" + "ENABLE_CPPCHECK_DEFAULT": false, + "ENABLE_CLANG_TIDY_DEFAULT": false } }, { - "name": "config-unixlike-common", + "name": "unixlike", "description": "Unixlike OS settings for gcc and clang toolchains", "hidden": true, - "inherits": "config-common", "condition": { "type": "inList", "string": "${hostSystemName}", @@ -57,7 +55,7 @@ } }, { - "name": "config-msvc-compiler", + "name": "msvc", "description": "Set cl as the compiler to be used", "hidden": true, "cacheVariables": { @@ -66,7 +64,7 @@ } }, { - "name": "config-clangcl-compiler", + "name": "clang_cl", "description": "Set clang-cl as the compiler to be used", "hidden": true, "cacheVariables": { @@ -80,7 +78,7 @@ } }, { - "name": "config-gcc-compiler", + "name": "gcc", "description": "Set gcc as the compiler to be used", "hidden": true, "cacheVariables": { @@ -89,7 +87,7 @@ } }, { - "name": "config-clang-compiler", + "name": "clang", "description": "Set clang as the compiler to be used", "hidden": true, "cacheVariables": { @@ -98,46 +96,114 @@ } }, { - "name": "windows-msvc", + "name": "dev", + "description": "Set the flags to enable the Developer Mode", + "hidden": true, + "cacheVariables": { + "ENABLE_DEVELOPER_MODE": true + } + }, + { + "name": "usr", + "description": "Set the flags to enable the User Mode", + "hidden": true, + "cacheVariables": { + "ENABLE_DEVELOPER_MODE": false + } + }, + { + "name": "windows-msvc-dev", + "displayName": "msvc", + "description": "Target Windows with the msvc compiler (Developer Mode)", + "inherits": [ + "ninja_multi", + "windows", + "msvc", + "dev" + ] + }, + { + "name": "windows-clang-dev", + "displayName": "clang", + "description": "Target Windows with the clang compiler (Developer Mode)", + "inherits": [ + "ninja_multi", + "windows", + "clang_cl", + "dev" + ] + }, + { + "name": "unixlike-gcc-dev", + "displayName": "gcc", + "description": "Target unixlike OS with the gcc compiler (Developer Mode)", + "inherits": [ + "ninja_multi", + "unixlike", + "gcc", + "dev" + ] + }, + { + "name": "unixlike-clang-dev", + "displayName": "clang", + "description": "Target unixlike OS with the clang compiler (Developer Mode)", + "inherits": [ + "ninja_multi", + "unixlike", + "clang", + "dev" + ] + }, + { + "name": "windows-msvc-usr", "displayName": "msvc", - "description": "Target Windows with the msvc compiler", + "description": "Target Windows with the msvc compiler (User Mode)", "inherits": [ - "config-windows-common", - "config-msvc-compiler" + "ninja_multi", + "windows", + "msvc", + "usr" ] }, { - "name": "windows-clang", + "name": "windows-clang-usr", "displayName": "clang", - "description": "Target Windows with the clang compiler", + "description": "Target Windows with the clang compiler (User Mode)", "inherits": [ - "config-windows-common", - "config-clangcl-compiler" + "ninja_multi", + "windows", + "clang_cl", + "usr" ] }, { - "name": "unixlike-gcc", + "name": "unixlike-gcc-usr", "displayName": "gcc", - "description": "Target unixlike OS with the gcc compiler", + "description": "Target unixlike OS with the gcc compiler (User Mode)", "inherits": [ - "config-unixlike-common", - "config-gcc-compiler" + "ninja_multi", + "unixlike", + "gcc", + "usr" ] }, { - "name": "unixlike-clang", + "name": "unixlike-clang-usr", "displayName": "clang", - "description": "Target unixlike OS with the clang compiler", + "description": "Target unixlike OS with the clang compiler (User Mode)", "inherits": [ - "config-unixlike-common", - "config-clang-compiler" + "ninja_multi", + "unixlike", + "clang", + "usr" ] } ], "buildPresets": [ { - "name": "build-windows", - "description": "Windows common build settings", + "name": "windows", + "description": "Windows build settings", "hidden": true, "condition": { "type": "equals", @@ -146,8 +212,8 @@ } }, { - "name": "build-unixlike", - "description": "Unixlike OS common build settings", + "name": "unixlike", + "description": "Unixlike OS build settings", "hidden": true, "condition": { "type": "inList", @@ -159,25 +225,25 @@ } }, { - "name": "build-debug", + "name": "debug", "description": "Set build type to Debug", "hidden": true, "configuration": "Debug" }, { - "name": "build-release", + "name": "release", "description": "Set build type to Release", "hidden": true, "configuration": "Release" }, { - "name": "build-common-relwithdebinfo", + "name": "relwithdebinfo", "description": "Set build type to RelWithDebInfo", "hidden": true, "configuration": "RelWithDebInfo" }, { - "name": "build-common-minsizerel", + "name": "minsizerel", "description": "Set build type to MinSizeRel", "hidden": true, "configuration": "MinSizeRel" @@ -187,65 +253,165 @@ "displayName": "Debug", "description": "Build msvc debug on windows", "inherits": [ - "build-windows", - "build-debug" + "windows", + "debug" ], - "configurePreset": "windows-msvc" + "configurePreset": "windows-msvc-dev" }, { "name": "windows-msvc-release", "displayName": "Release", "description": "Build msvc release on windows", "inherits": [ - "build-windows", - "build-release" + "windows", + "release" + ], + "configurePreset": "windows-msvc-dev" + }, + { + "name": "windows-clang-debug", + "displayName": "Debug", + "description": "Build clang debug on windows", + "inherits": [ + "windows", + "debug" ], - "configurePreset": "windows-msvc" + "configurePreset": "windows-clang-dev" + }, + { + "name": "windows-clang-release", + "displayName": "Release", + "description": "Build clang release on windows", + "inherits": [ + "windows", + "release" + ], + "configurePreset": "windows-clang-dev" }, { "name": "unixlike-gcc-debug", "displayName": "Debug", "description": "Build gcc debug on unixlike OS", "inherits": [ - "build-unixlike", - "build-debug" + "unixlike", + "debug" ], - "configurePreset": "unixlike-gcc" + "configurePreset": "unixlike-gcc-dev" }, { "name": "unixlike-gcc-release", "displayName": "Release", "description": "Build gcc release on unixlike OS", "inherits": [ - "build-unixlike", - "build-release" + "unixlike", + "release" ], - "configurePreset": "unixlike-gcc" + "configurePreset": "unixlike-gcc-dev" }, { "name": "unixlike-clang-debug", "displayName": "Debug", "description": "Build clang debug on unixlike OS", "inherits": [ - "build-unixlike", - "build-debug" + "unixlike", + "debug" ], - "configurePreset": "unixlike-clang" + "configurePreset": "unixlike-clang-dev" }, { "name": "unixlike-clang-release", "displayName": "Release", "description": "Build clang release on unixlike OS", "inherits": [ - "build-unixlike", - "build-release" + "unixlike", + "release" + ], + "configurePreset": "unixlike-clang-dev" + }, + { + "name": "windows-msvc-debug-usr", + "displayName": "Debug", + "description": "Build msvc debug on windows", + "inherits": [ + "windows", + "debug" + ], + "configurePreset": "windows-msvc-usr" + }, + { + "name": "windows-msvc-release-usr", + "displayName": "Release", + "description": "Build msvc release on windows", + "inherits": [ + "windows", + "release" + ], + "configurePreset": "windows-msvc-usr" + }, + { + "name": "windows-clang-debug-usr", + "displayName": "Debug", + "description": "Build clang debug on windows", + "inherits": [ + "windows", + "debug" + ], + "configurePreset": "windows-clang-usr" + }, + { + "name": "windows-clang-release-usr", + "displayName": "Release", + "description": "Build clang release on windows", + "inherits": [ + "windows", + "release" + ], + "configurePreset": "windows-clang-usr" + }, + { + "name": "unixlike-gcc-debug-usr", + "displayName": "Debug", + "description": "Build gcc debug on unixlike OS", + "inherits": [ + "unixlike", + "debug" + ], + "configurePreset": "unixlike-gcc-usr" + }, + { + "name": "unixlike-gcc-release-usr", + "displayName": "Release", + "description": "Build gcc release on unixlike OS", + "inherits": [ + "unixlike", + "release" + ], + "configurePreset": "unixlike-gcc-usr" + }, + { + "name": "unixlike-clang-debug-usr", + "displayName": "Debug", + "description": "Build clang debug on unixlike OS", + "inherits": [ + "unixlike", + "debug" + ], + "configurePreset": "unixlike-clang-usr" + }, + { + "name": "unixlike-clang-release-usr", + "displayName": "Release", + "description": "Build clang release on unixlike OS", + "inherits": [ + "unixlike", + "release" ], - "configurePreset": "unixlike-clang" + "configurePreset": "unixlike-clang-usr" } ], "testPresets": [ { - "name": "test-common", + "name": "ninja_multi", "description": "Test CMake settings that apply to all configurations", "hidden": true, "output": { @@ -257,8 +423,8 @@ } }, { - "name": "test-windows", - "description": "Windows common test settings", + "name": "windows", + "description": "Windows test settings", "hidden": true, "condition": { "type": "equals", @@ -267,8 +433,8 @@ } }, { - "name": "test-unixlike", - "description": "Unixlike OS common test settings", + "name": "unixlike", + "description": "Unixlike OS test settings", "hidden": true, "condition": { "type": "inList", @@ -280,13 +446,13 @@ } }, { - "name": "test-debug", + "name": "debug", "description": "Test CMake settings that apply to debug configurations", "hidden": true, "configuration": "Debug" }, { - "name": "test-release", + "name": "release", "description": "Test CMake settings that apply to release configurations", "hidden": true, "configuration": "Release" @@ -296,88 +462,176 @@ "displayName": "Debug", "description": "Set Strict rules for windows msvc debug tests", "inherits": [ - "test-common", - "test-windows", - "test-debug" + "ninja_multi", + "windows", + "debug" ], - "configurePreset": "windows-msvc" + "configurePreset": "windows-msvc-dev" }, { "name": "windows-msvc-release", "displayName": "Release", "description": "Set Strict rules for windows msvc release tests", "inherits": [ - "test-common", - "test-windows", - "test-release" + "ninja_multi", + "windows", + "release" ], - "configurePreset": "windows-msvc" + "configurePreset": "windows-msvc-dev" }, { "name": "windows-clang-debug", "displayName": "Debug", "description": "Set Strict rules for windows clang debug tests", "inherits": [ - "test-common", - "test-windows", - "test-debug" + "ninja_multi", + "windows", + "debug" ], - "configurePreset": "windows-clang" + "configurePreset": "windows-clang-dev" }, { "name": "windows-clang-release", "displayName": "Release", "description": "Set Strict rules for windows clang release tests", "inherits": [ - "test-common", - "test-windows", - "test-release" + "ninja_multi", + "windows", + "release" ], - "configurePreset": "windows-clang" + "configurePreset": "windows-clang-dev" }, { "name": "unixlike-gcc-debug", "displayName": "Debug", "description": "Set Strict rules for unixlike gcc debug tests", "inherits": [ - "test-common", - "test-unixlike", - "test-debug" + "ninja_multi", + "unixlike", + "debug" ], - "configurePreset": "unixlike-gcc" + "configurePreset": "unixlike-gcc-dev" }, { "name": "unixlike-gcc-release", "displayName": "Release", "description": "Set Strict rules for unixlike gcc release tests", "inherits": [ - "test-common", - "test-unixlike", - "test-release" + "ninja_multi", + "unixlike", + "release" ], - "configurePreset": "unixlike-gcc" + "configurePreset": "unixlike-gcc-dev" }, { "name": "unixlike-clang-debug", "displayName": "Debug", "description": "Set Strict rules for unixlike clang debug tests", "inherits": [ - "test-common", - "test-unixlike", - "test-debug" + "ninja_multi", + "unixlike", + "debug" ], - "configurePreset": "unixlike-clang" + "configurePreset": "unixlike-clang-dev" }, { "name": "unixlike-clang-release", "displayName": "Release", "description": "Set Strict rules for unixlike clang release tests", "inherits": [ - "test-common", - "test-unixlike", - "test-release" + "ninja_multi", + "unixlike", + "release" + ], + "configurePreset": "unixlike-clang-dev" + }, + { + "name": "windows-msvc-debug-usr", + "displayName": "Debug", + "description": "Set Strict rules for windows msvc debug tests", + "inherits": [ + "ninja_multi", + "windows", + "debug" + ], + "configurePreset": "windows-msvc-usr" + }, + { + "name": "windows-msvc-release-usr", + "displayName": "Release", + "description": "Set Strict rules for windows msvc release tests", + "inherits": [ + "ninja_multi", + "windows", + "release" + ], + "configurePreset": "windows-msvc-usr" + }, + { + "name": "windows-clang-debug-usr", + "displayName": "Debug", + "description": "Set Strict rules for windows clang debug tests", + "inherits": [ + "ninja_multi", + "windows", + "debug" + ], + "configurePreset": "windows-clang-usr" + }, + { + "name": "windows-clang-release-usr", + "displayName": "Release", + "description": "Set Strict rules for windows clang release tests", + "inherits": [ + "ninja_multi", + "windows", + "release" + ], + "configurePreset": "windows-clang-usr" + }, + { + "name": "unixlike-gcc-debug-usr", + "displayName": "Debug", + "description": "Set Strict rules for unixlike gcc debug tests", + "inherits": [ + "ninja_multi", + "unixlike", + "debug" + ], + "configurePreset": "unixlike-gcc-usr" + }, + { + "name": "unixlike-gcc-release-usr", + "displayName": "Release", + "description": "Set Strict rules for unixlike gcc release tests", + "inherits": [ + "ninja_multi", + "unixlike", + "release" + ], + "configurePreset": "unixlike-gcc-usr" + }, + { + "name": "unixlike-clang-debug-usr", + "displayName": "Debug", + "description": "Set Strict rules for unixlike clang debug tests", + "inherits": [ + "ninja_multi", + "unixlike", + "debug" + ], + "configurePreset": "unixlike-clang-usr" + }, + { + "name": "unixlike-clang-release-usr", + "displayName": "Release", + "description": "Set Strict rules for unixlike clang release tests", + "inherits": [ + "ninja_multi", + "unixlike", + "release" ], - "configurePreset": "unixlike-clang" + "configurePreset": "unixlike-clang-usr" } ] } \ No newline at end of file diff --git a/CMakeUserPresets.json b/CMakeUserPresets.json deleted file mode 100644 index f34a72c2..00000000 --- a/CMakeUserPresets.json +++ /dev/null @@ -1,134 +0,0 @@ -{ - "version": 3, - "cmakeMinimumRequired": { - "major": 3, - "minor": 21, - "patch": 0 - }, - "configurePresets": [ - { - "name": "config-developer-mode", - "description": "Set the flags to enable the development mode", - "hidden": true, - "cacheVariables": { - "ENABLE_DEVELOPER_MODE": "ON" - } - }, - { - "name": "config-user-mode", - "description": "Set the flags to enable the user mode", - "hidden": true, - "cacheVariables": { - "ENABLE_DEVELOPER_MODE": "OFF" - } - }, - { - "name": "windows-msvc-developer", - "displayName": "msvc (Developer Mode)", - "description": "Target Windows with the msvc compiler using Developer Mode", - "inherits": [ - "config-windows-common", - "config-msvc-compiler", - "config-developer-mode" - ] - }, - { - "name": "windows-msvc-user", - "displayName": "msvc (User Mode)", - "description": "Target Windows with the msvc compiler using User Mode", - "inherits": [ - "config-windows-common", - "config-msvc-compiler", - "config-user-mode" - ] - } - ], - "buildPresets": [ - { - "name": "windows-msvc-developer-debug", - "displayName": "Debug", - "description": "Build msvc debug on windows (Developer Mode)", - "inherits": [ - "build-windows", - "build-debug" - ], - "configurePreset": "windows-msvc-developer" - }, - { - "name": "windows-msvc-developer-release", - "displayName": "Release", - "description": "Build msvc release on windows (Developer Mode)", - "inherits": [ - "build-windows", - "build-release" - ], - "configurePreset": "windows-msvc-developer" - }, - { - "name": "windows-msvc-user-debug", - "displayName": "Debug", - "description": "Build msvc debug on windows (User Mode)", - "inherits": [ - "build-windows", - "build-debug" - ], - "configurePreset": "windows-msvc-user" - }, - { - "name": "windows-msvc-user-release", - "displayName": "Release", - "description": "Build msvc release on windows (User Mode)", - "inherits": [ - "build-windows", - "build-release" - ], - "configurePreset": "windows-msvc-user" - } - ], - "testPresets": [ - { - "name": "test-windows-msvc-developer-debug", - "displayName": "Debug", - "description": "Set Strict rules for windows msvc (Developer Mode) debug tests", - "inherits": [ - "test-common", - "test-windows", - "test-debug" - ], - "configurePreset": "windows-msvc-developer" - }, - { - "name": "test-windows-msvc-developer-release", - "displayName": "Release", - "description": "Set Strict rules for windows msvc (Developer Mode) release tests", - "inherits": [ - "test-common", - "test-windows", - "test-release" - ], - "configurePreset": "windows-msvc-developer" - }, - { - "name": "test-windows-msvc-user-debug", - "displayName": "Debug", - "description": "Set Strict rules for windows msvc (User Mode) debug tests", - "inherits": [ - "test-common", - "test-windows", - "test-debug" - ], - "configurePreset": "windows-msvc-user" - }, - { - "name": "test-windows-msvc-user-release", - "displayName": "Release", - "description": "Set Strict rules for windows msvc (User Mode) release tests", - "inherits": [ - "test-common", - "test-windows", - "test-release" - ], - "configurePreset": "windows-msvc-user" - } - ] -} \ No newline at end of file diff --git a/README_building.md b/README_building.md index b4a4b9bd..09a00660 100644 --- a/README_building.md +++ b/README_building.md @@ -94,10 +94,22 @@ With Cmake directly: Cmake will automatically create the `./build` folder if it does not exist, and it wil configure the project. -Instead, if you have CMake version 3.21+, you can use one of the configuration presets that are listed in the CmakePresets.json file. +Instead, if you have CMake version 3.21+, you can use one of the configuration presets that are listed in the CMakePresets.json file. - cmake . --preset - cmake --build + cmake . --list-presets=all + +Given that list you can configure, build and test the project with the following commands. + + cmake -S . --preset= + cmake --build --preset= + ctest --build --preset= + +where the possible values of the configure, build and test preset names can be found in the CMakePresets.json and CMakeUserPresets.json files in the root folder. +e.g. For a Linux system you can use: + + cmake --preset=unixlike-gcc-usr + cmake --build --preset=unixlike-gcc-debug-usr + ctest --build --preset=unixlike-gcc-debug-usr #### (2.b) Configuring via ccmake: From dfb695d7c979bf2156497dfa3b3d2b1dafc2889c Mon Sep 17 00:00:00 2001 From: Iason Nikolas Date: Mon, 18 Apr 2022 15:54:03 +0300 Subject: [PATCH 5/8] Give different names to different build and test rpesets based on the mode --- CMakePresets.json | 64 +++++++++++++++++++++++------------------------ 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index a854e715..0a717477 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -249,7 +249,7 @@ "configuration": "MinSizeRel" }, { - "name": "windows-msvc-debug", + "name": "windows-msvc-dev-debug", "displayName": "Debug", "description": "Build msvc debug on windows", "inherits": [ @@ -259,7 +259,7 @@ "configurePreset": "windows-msvc-dev" }, { - "name": "windows-msvc-release", + "name": "windows-msvc-dev-release", "displayName": "Release", "description": "Build msvc release on windows", "inherits": [ @@ -269,7 +269,7 @@ "configurePreset": "windows-msvc-dev" }, { - "name": "windows-clang-debug", + "name": "windows-clang-dev-debug", "displayName": "Debug", "description": "Build clang debug on windows", "inherits": [ @@ -279,7 +279,7 @@ "configurePreset": "windows-clang-dev" }, { - "name": "windows-clang-release", + "name": "windows-clang-dev-release", "displayName": "Release", "description": "Build clang release on windows", "inherits": [ @@ -289,7 +289,7 @@ "configurePreset": "windows-clang-dev" }, { - "name": "unixlike-gcc-debug", + "name": "unixlike-gcc-dev-debug", "displayName": "Debug", "description": "Build gcc debug on unixlike OS", "inherits": [ @@ -299,7 +299,7 @@ "configurePreset": "unixlike-gcc-dev" }, { - "name": "unixlike-gcc-release", + "name": "unixlike-gcc-dev-release", "displayName": "Release", "description": "Build gcc release on unixlike OS", "inherits": [ @@ -309,7 +309,7 @@ "configurePreset": "unixlike-gcc-dev" }, { - "name": "unixlike-clang-debug", + "name": "unixlike-clang-dev-debug", "displayName": "Debug", "description": "Build clang debug on unixlike OS", "inherits": [ @@ -319,7 +319,7 @@ "configurePreset": "unixlike-clang-dev" }, { - "name": "unixlike-clang-release", + "name": "unixlike-clang-dev-release", "displayName": "Release", "description": "Build clang release on unixlike OS", "inherits": [ @@ -329,7 +329,7 @@ "configurePreset": "unixlike-clang-dev" }, { - "name": "windows-msvc-debug-usr", + "name": "windows-msvc-usr-debug", "displayName": "Debug", "description": "Build msvc debug on windows", "inherits": [ @@ -339,7 +339,7 @@ "configurePreset": "windows-msvc-usr" }, { - "name": "windows-msvc-release-usr", + "name": "windows-msvc-usr-release", "displayName": "Release", "description": "Build msvc release on windows", "inherits": [ @@ -349,7 +349,7 @@ "configurePreset": "windows-msvc-usr" }, { - "name": "windows-clang-debug-usr", + "name": "windows-clang-usr-debug", "displayName": "Debug", "description": "Build clang debug on windows", "inherits": [ @@ -359,7 +359,7 @@ "configurePreset": "windows-clang-usr" }, { - "name": "windows-clang-release-usr", + "name": "windows-clang-usr-release", "displayName": "Release", "description": "Build clang release on windows", "inherits": [ @@ -369,7 +369,7 @@ "configurePreset": "windows-clang-usr" }, { - "name": "unixlike-gcc-debug-usr", + "name": "unixlike-gcc-usr-debug", "displayName": "Debug", "description": "Build gcc debug on unixlike OS", "inherits": [ @@ -379,7 +379,7 @@ "configurePreset": "unixlike-gcc-usr" }, { - "name": "unixlike-gcc-release-usr", + "name": "unixlike-gcc-usr-release", "displayName": "Release", "description": "Build gcc release on unixlike OS", "inherits": [ @@ -389,7 +389,7 @@ "configurePreset": "unixlike-gcc-usr" }, { - "name": "unixlike-clang-debug-usr", + "name": "unixlike-clang-usr-debug", "displayName": "Debug", "description": "Build clang debug on unixlike OS", "inherits": [ @@ -399,7 +399,7 @@ "configurePreset": "unixlike-clang-usr" }, { - "name": "unixlike-clang-release-usr", + "name": "unixlike-clang-usr-release", "displayName": "Release", "description": "Build clang release on unixlike OS", "inherits": [ @@ -458,7 +458,7 @@ "configuration": "Release" }, { - "name": "windows-msvc-debug", + "name": "windows-msvc-dev-debug", "displayName": "Debug", "description": "Set Strict rules for windows msvc debug tests", "inherits": [ @@ -469,7 +469,7 @@ "configurePreset": "windows-msvc-dev" }, { - "name": "windows-msvc-release", + "name": "windows-msvc-dev-release", "displayName": "Release", "description": "Set Strict rules for windows msvc release tests", "inherits": [ @@ -480,7 +480,7 @@ "configurePreset": "windows-msvc-dev" }, { - "name": "windows-clang-debug", + "name": "windows-clang-dev-debug", "displayName": "Debug", "description": "Set Strict rules for windows clang debug tests", "inherits": [ @@ -491,7 +491,7 @@ "configurePreset": "windows-clang-dev" }, { - "name": "windows-clang-release", + "name": "windows-clang-dev-release", "displayName": "Release", "description": "Set Strict rules for windows clang release tests", "inherits": [ @@ -502,7 +502,7 @@ "configurePreset": "windows-clang-dev" }, { - "name": "unixlike-gcc-debug", + "name": "unixlike-gcc-dev-debug", "displayName": "Debug", "description": "Set Strict rules for unixlike gcc debug tests", "inherits": [ @@ -513,7 +513,7 @@ "configurePreset": "unixlike-gcc-dev" }, { - "name": "unixlike-gcc-release", + "name": "unixlike-gcc-dev-release", "displayName": "Release", "description": "Set Strict rules for unixlike gcc release tests", "inherits": [ @@ -524,7 +524,7 @@ "configurePreset": "unixlike-gcc-dev" }, { - "name": "unixlike-clang-debug", + "name": "unixlike-clang-dev-debug", "displayName": "Debug", "description": "Set Strict rules for unixlike clang debug tests", "inherits": [ @@ -535,7 +535,7 @@ "configurePreset": "unixlike-clang-dev" }, { - "name": "unixlike-clang-release", + "name": "unixlike-clang-dev-release", "displayName": "Release", "description": "Set Strict rules for unixlike clang release tests", "inherits": [ @@ -546,7 +546,7 @@ "configurePreset": "unixlike-clang-dev" }, { - "name": "windows-msvc-debug-usr", + "name": "windows-msvc-usr-debug", "displayName": "Debug", "description": "Set Strict rules for windows msvc debug tests", "inherits": [ @@ -557,7 +557,7 @@ "configurePreset": "windows-msvc-usr" }, { - "name": "windows-msvc-release-usr", + "name": "windows-msvc-usr-release", "displayName": "Release", "description": "Set Strict rules for windows msvc release tests", "inherits": [ @@ -568,7 +568,7 @@ "configurePreset": "windows-msvc-usr" }, { - "name": "windows-clang-debug-usr", + "name": "windows-clang-usr-debug", "displayName": "Debug", "description": "Set Strict rules for windows clang debug tests", "inherits": [ @@ -579,7 +579,7 @@ "configurePreset": "windows-clang-usr" }, { - "name": "windows-clang-release-usr", + "name": "windows-clang-usr-release", "displayName": "Release", "description": "Set Strict rules for windows clang release tests", "inherits": [ @@ -590,7 +590,7 @@ "configurePreset": "windows-clang-usr" }, { - "name": "unixlike-gcc-debug-usr", + "name": "unixlike-gcc-usr-debug", "displayName": "Debug", "description": "Set Strict rules for unixlike gcc debug tests", "inherits": [ @@ -601,7 +601,7 @@ "configurePreset": "unixlike-gcc-usr" }, { - "name": "unixlike-gcc-release-usr", + "name": "unixlike-gcc-usr-release", "displayName": "Release", "description": "Set Strict rules for unixlike gcc release tests", "inherits": [ @@ -612,7 +612,7 @@ "configurePreset": "unixlike-gcc-usr" }, { - "name": "unixlike-clang-debug-usr", + "name": "unixlike-clang-usr-debug", "displayName": "Debug", "description": "Set Strict rules for unixlike clang debug tests", "inherits": [ @@ -623,7 +623,7 @@ "configurePreset": "unixlike-clang-usr" }, { - "name": "unixlike-clang-release-usr", + "name": "unixlike-clang-usr-release", "displayName": "Release", "description": "Set Strict rules for unixlike clang release tests", "inherits": [ From aed7d9711326f9fa49b5238e90ac6fa490bd1cbd Mon Sep 17 00:00:00 2001 From: Iason Nikolas Date: Mon, 18 Apr 2022 16:01:54 +0300 Subject: [PATCH 6/8] Add list of existing presets in the CI --- .github/workflows/ci.yml | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ff341bd5..495bada2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,7 @@ on: env: # Conan cache environment variables CONAN_SYSREQUIRES_MODE: enabled + CONAN_REVISIONS_ENABLED: 1 CONAN_USER_HOME: "${{ github.workspace }}/conan-cache" CONAN_USER_HOME_SHORT: "${{ github.workspace }}/conan-cache/short" CLANG_TIDY_VERSION: "13.0.0" @@ -46,6 +47,32 @@ jobs: developer_mode: - ON - OFF + configure_preset: + - windows-msvc-dev + - windows-clang-dev + - unixlike-gcc-dev + - unixlike-clang-dev + - windows-msvc-usr + - windows-clang-usr + - unixlike-gcc-usr + - unixlike-clang-usr + build_test_preset: + - windows-msvc-dev-debug + - windows-msvc-dev-release + - windows-clang-dev-debug + - windows-clang-dev-release + - unixlike-gcc-dev-debug + - unixlike-gcc-dev-release + - unixlike-clang-dev-debug + - unixlike-clang-dev-release + - windows-msvc-usr-debug + - windows-msvc-usr-release + - windows-clang-usr-debug + - windows-clang-usr-release + - unixlike-gcc-usr-debug + - unixlike-gcc-usr-release + - unixlike-clang-usr-debug + - unixlike-clang-usr-release exclude: # mingw is determined by this author to be too buggy to support @@ -180,7 +207,6 @@ jobs: files: | build/*-*${{ matrix.build_type }}*-*.* - - name: Publish to codecov uses: codecov/codecov-action@v2 with: From 7d1d29fd024b05fe2a8a2fb35990afa178ad082a Mon Sep 17 00:00:00 2001 From: Iason Nikolas Date: Mon, 18 Apr 2022 17:59:42 +0300 Subject: [PATCH 7/8] modify chach action to get presets test ci --- .github/actions/setup_cache/action.yml | 14 ++++---------- .github/workflows/ci.yml | 6 ++---- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/.github/actions/setup_cache/action.yml b/.github/actions/setup_cache/action.yml index 3291fce9..80ae4745 100644 --- a/.github/actions/setup_cache/action.yml +++ b/.github/actions/setup_cache/action.yml @@ -2,16 +2,10 @@ name: 'setup_cache' description: 'sets up the shared cache' inputs: - compiler: + configure_preset: required: true type: string - build_type: - required: true - type: string - generator: - required: true - type: string - developer_mode: + build_preset: required: true type: string @@ -32,7 +26,7 @@ runs: ${{ env.XDG_CACHE_HOME }}/vcpkg/archives ${{ env.LOCALAPPDATA }}\vcpkg\archives ${{ env.APPDATA }}\vcpkg\archives - key: ${{ runner.os }}-${{ inputs.compiler }}-${{ inputs.build_type }}-${{ hashFiles('./conanfile.txt')}}-${{ inputs.generator }}-${{ inputs.developer_mode }}-${{ hashFiles('**/CMakeLists.txt') }}-${{ hashFiles('./vcpkg.json')}} + key: ${{ runner.os }}-${{ inputs.configure_preset }}-${{ inputs.build_preset }}-${{ hashFiles('./conanfile.txt')}}-${{ hashFiles('**/CMakeLists.txt') }}-${{ hashFiles('./vcpkg.json')}} restore-keys: | - ${{ runner.os }}-${{ inputs.compiler }}-${{ inputs.build_type }}-${{ hashFiles('./conanfile.txt') }} + ${{ runner.os }}-${{ inputs.configure_preset }}-${{ inputs.build_preset }}-${{ hashFiles('./conanfile.txt') }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 495bada2..5d12777d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -140,10 +140,8 @@ jobs: - name: Setup Cache uses: ./.github/actions/setup_cache with: - compiler: ${{ matrix.compiler }} - build_type: ${{ matrix.build_type }} - developer_mode: ${{ matrix.developer_mode }} - generator: ${{ matrix.generator }} + configure_preset: ${{ matrix.configure_preset }} + build_preset: ${{ matrix.build_test_preset }} - name: Setup Cpp uses: aminya/setup-cpp@v1 From 56964450b3177fa4af397ebb0f7808cbb8d22a42 Mon Sep 17 00:00:00 2001 From: Iason Nikolas Date: Sun, 22 May 2022 18:06:13 +0300 Subject: [PATCH 8/8] Call CMake with presets --- .github/workflows/ci.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5d12777d..ba66585e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -156,7 +156,6 @@ jobs: ccache: true clangtidy: ${{ env.CLANG_TIDY_VERSION }} - cppcheck: true gcovr: true @@ -170,12 +169,12 @@ jobs: # has meaningful results - name: Configure CMake run: | - cmake -S . -B ./build -G "${{matrix.generator}}" -DCMAKE_BUILD_TYPE:STRING=${{matrix.build_type}} -DENABLE_DEVELOPER_MODE:BOOL=${{matrix.developer_mode}} -DOPT_ENABLE_COVERAGE:BOOL=${{ matrix.build_type == 'Debug' }} -DGIT_SHA:STRING=${{ github.sha }} + cmake -S . --preset="${{matrix.configure_preset}}" -DOPT_ENABLE_COVERAGE:BOOL=${{ matrix.build_type == 'Debug' }} -DGIT_SHA:STRING=${{ github.sha }} - name: Build # Execute the build. You can specify a specific target with "--target " run: | - cmake --build ./build --config ${{matrix.build_type}} + cmake --build ./build --preset=${{matrix.build_test_preset}} - name: Unix - Test and coverage if: runner.os != 'Windows' @@ -183,14 +182,14 @@ jobs: # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail run: | - ctest -C ${{matrix.build_type}} + ctest -C --preset=${{matrix.build_test_preset}} gcovr -j ${{env.nproc}} --delete --root ../ --print-summary --xml-pretty --xml coverage.xml . --gcov-executable '${{ matrix.gcov_executable }}' - name: Windows - Test and coverage if: runner.os == 'Windows' working-directory: ./build run: | - OpenCppCoverage.exe --export_type cobertura:coverage.xml --cover_children -- ctest -C ${{matrix.build_type}} + OpenCppCoverage.exe --export_type cobertura:coverage.xml --cover_children -- ctest -C --preset=${{matrix.build_test_preset}} - name: CPack if: matrix.package_generator != ''