Skip to content

Feature/add workflow presets #68

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.21)
cmake_minimum_required(VERSION 3.21...3.27)

# This template attempts to be "fetch_content"-able
# so that it works well with tools like CPM or other
@@ -94,6 +94,11 @@ endif()
# set the startup project for the "play" button in MSVC
set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT intro)

if(ENABLE_DOXYGEN)
include(cmake/Doxygen.cmake)
myproject_enable_doxygen("")
endif()

if(CMAKE_SKIP_INSTALL_RULES)
return()
endif()
159 changes: 132 additions & 27 deletions CMakePresets.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"version": 3,
"version": 6,
"cmakeMinimumRequired": {
"major": 3,
"minor": 21,
"minor": 25,
"patch": 0
},
"configurePresets": [
@@ -16,7 +16,8 @@
},
{
"name": "conf-windows-common",
"description": "Windows settings for MSBuild toolchain that apply to msvc and clang",
"description":
"Windows settings for MSBuild toolchain that apply to msvc and clang",
"hidden": true,
"inherits": "conf-common",
"condition": {
@@ -50,6 +51,9 @@
"Darwin"
]
},
"cacheVariables": {
"CMAKE_UNITY_BUILD": true
},
"vendor": {
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
@@ -59,7 +63,8 @@
{
"name": "windows-msvc-debug-developer-mode",
"displayName": "msvc Debug (Developer Mode)",
"description": "Target Windows with the msvc compiler, debug build type",
"description":
"Target Windows with the msvc compiler, debug build type",
"inherits": "conf-windows-common",
"cacheVariables": {
"CMAKE_C_COMPILER": "cl",
@@ -71,7 +76,8 @@
{
"name": "windows-msvc-release-developer-mode",
"displayName": "msvc Release (Developer Mode)",
"description": "Target Windows with the msvc compiler, release build type",
"description":
"Target Windows with the msvc compiler, release build type",
"inherits": "conf-windows-common",
"cacheVariables": {
"CMAKE_C_COMPILER": "cl",
@@ -83,7 +89,8 @@
{
"name": "windows-msvc-debug-user-mode",
"displayName": "msvc Debug (User Mode)",
"description": "Target Windows with the msvc compiler, debug build type",
"description":
"Target Windows with the msvc compiler, debug build type",
"inherits": "conf-windows-common",
"cacheVariables": {
"CMAKE_C_COMPILER": "cl",
@@ -95,7 +102,8 @@
{
"name": "windows-msvc-release-user-mode",
"displayName": "msvc Release (User Mode)",
"description": "Target Windows with the msvc compiler, release build type",
"description":
"Target Windows with the msvc compiler, release build type",
"inherits": "conf-windows-common",
"cacheVariables": {
"CMAKE_C_COMPILER": "cl",
@@ -107,7 +115,8 @@
{
"name": "windows-clang-debug",
"displayName": "clang Debug",
"description": "Target Windows with the clang compiler, debug build type",
"description":
"Target Windows with the clang compiler, debug build type",
"inherits": "conf-windows-common",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl",
@@ -123,7 +132,8 @@
{
"name": "windows-clang-release",
"displayName": "clang Release",
"description": "Target Windows with the clang compiler, release build type",
"description":
"Target Windows with the clang compiler, release build type",
"inherits": "conf-windows-common",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl",
@@ -137,20 +147,24 @@
}
},
{
"name": "unixlike-gcc-debug",
"name": "gcc-debug",
"displayName": "gcc Debug",
"description": "Target Unix-like OS with the gcc compiler, debug build type",
"description":
"Target Unix-like OS with the gcc compiler, debug build type",
"inherits": "conf-unixlike-common",
"cacheVariables": {
"myproject_ENABLE_COVERAGE": false,
"CMAKE_SKIP_INSTALL_RULES": true,
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++",
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "unixlike-gcc-release",
"name": "gcc-release",
"displayName": "gcc Release",
"description": "Target Unix-like OS with the gcc compiler, release build type",
"description":
"Target Unix-like OS with the gcc compiler, release build type",
"inherits": "conf-unixlike-common",
"cacheVariables": {
"CMAKE_C_COMPILER": "gcc",
@@ -159,20 +173,24 @@
}
},
{
"name": "unixlike-clang-debug",
"name": "clang-debug",
"displayName": "clang Debug",
"description": "Target Unix-like OS with the clang compiler, debug build type",
"description":
"Target Unix-like OS with the clang compiler, debug build type",
"inherits": "conf-unixlike-common",
"cacheVariables": {
"myproject_ENABLE_COVERAGE": false,
"CMAKE_SKIP_INSTALL_RULES": true,
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "unixlike-clang-release",
"name": "clang-release",
"displayName": "clang Release",
"description": "Target Unix-like OS with the clang compiler, release build type",
"description":
"Target Unix-like OS with the clang compiler, release build type",
"inherits": "conf-unixlike-common",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
@@ -184,7 +202,8 @@
"testPresets": [
{
"name": "test-common",
"description": "Test CMake settings that apply to all configurations",
"description":
"Test CMake settings that apply to all configurations",
"hidden": true,
"output": {
"outputOnFailure": true
@@ -223,32 +242,118 @@
"configurePreset": "windows-clang-release"
},
{
"name": "test-unixlike-gcc-debug",
"name": "gcc-debug",
"displayName": "Strict",
"description": "Enable output and stop on failure",
"inherits": "test-common",
"configurePreset": "unixlike-gcc-debug"
"configurePreset": "gcc-debug"
},
{
"name": "test-unixlike-gcc-release",
"name": "gcc-release",
"displayName": "Strict",
"description": "Enable output and stop on failure",
"inherits": "test-common",
"configurePreset": "unixlike-gcc-release"
"configurePreset": "gcc-release"
},
{
"name": "test-unixlike-clang-debug",
"name": "clang-debug",
"displayName": "Strict",
"description": "Enable output and stop on failure",
"inherits": "test-common",
"configurePreset": "unixlike-clang-debug"
"configurePreset": "clang-debug"
},
{
"name": "test-unixlike-clang-release",
"name": "clang-release",
"displayName": "Strict",
"description": "Enable output and stop on failure",
"inherits": "test-common",
"configurePreset": "unixlike-clang-release"
"configurePreset": "clang-release"
}
],
"buildPresets": [
{
"name": "clang-release",
"configurePreset": "clang-release"
},
{
"name": "clang-install",
"configurePreset": "clang-release",
"targets": [
"install"
]
},
{
"name": "clang-debug",
"configurePreset": "clang-debug"
},
{
"name": "gcc-release",
"configurePreset": "gcc-release"
},
{
"name": "gcc-install",
"configurePreset": "gcc-release",
"targets": [
"install"
]
},
{
"name": "gcc-debug",
"configurePreset": "gcc-debug"
}
],
"packagePresets": [
{
"name": "clang-release",
"configurePreset": "clang-release",
"generators": [
"TGZ"
]
},
{
"name": "gcc-release",
"configurePreset": "gcc-release",
"generators": [
"TGZ"
]
}
],
"workflowPresets": [
{
"description": "Developer workflow without installation",
"name": "clang-debug",
"steps": [
{
"type": "configure",
"name": "clang-debug"
},
{
"type": "build",
"name": "clang-debug"
},
{
"type": "test",
"name": "clang-debug"
}
]
},
{
"description": "Release workflow without test",
"name": "clang-release",
"steps": [
{
"name": "clang-release",
"type": "configure"
},
{
"name": "clang-release",
"type": "build"
},
{
"name": "clang-release",
"type": "package"
}
]
}
]
}
}
171 changes: 171 additions & 0 deletions CMakeUserPresets.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
{
"version": 6,
"cmakeMinimumRequired": {
"major": 3,
"minor": 26,
"patch": 0
},
"configurePresets": [
{
"name": "default-config",
"hidden": true,
"generator": "Ninja",
"cacheVariables": {
"CMAKE_HOST_SYSTEM_PROCESSOR": "$penv{PROCESSOR_ARCHITECTURE}"
}
},
{
"name": "common-config",
"description": "Settings for all toolchains",
"hidden": true,
"inherits": "default-config",
"binaryDir": "${sourceDir}/out/build/${presetName}",
"installDir": "${sourceDir}/out/install/${presetName}",
"cacheVariables": {
"ENABLE_DOXYGEN": false,
"ENABLE_CPPCHECK": false,
"ENABLE_CLANG_TIDY": false
},
"vendor": {
"microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
"sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
}
}
},
{
"name": "debug",
"displayName": "Debug",
"description": "Debug build type",
"inherits": "conf-unixlike-common",
"cacheVariables": {
"CMAKE_SKIP_INSTALL_RULES": true,
"CMAKE_BUILD_TYPE": "Debug",
"myproject_ENABLE_COVERAGE": true
}
},
{
"name": "release",
"displayName": "Release",
"description": "Release build type",
"inherits": "conf-unixlike-common",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"ENABLE_DOXYGEN": true
}
}
],
"testPresets": [
{
"name": "common-test",
"description":
"Test CMake settings that apply to all configurations",
"hidden": true,
"output": {
"outputOnFailure": true
},
"execution": {
"noTestsAction": "error",
"stopOnFailure": true
}
},
{
"name": "debug",
"displayName": "Strict",
"description": "Enable output and stop on failure",
"inherits": "common-test",
"configuration": "Debug",
"configurePreset": "debug"
},
{
"name": "release",
"displayName": "Strict",
"description": "Enable output and stop on failure",
"inherits": "common-test",
"configuration": "Release",
"configurePreset": "release"
}
],
"buildPresets": [
{
"name": "release",
"configurePreset": "release"
},
{
"name": "install",
"configurePreset": "release",
"targets": [
"install"
]
},
{
"name": "doxygen-docs",
"configurePreset": "release",
"targets": [
"doxygen-docs"
]
},
{
"name": "debug",
"configurePreset": "debug"
}
],
"packagePresets": [
{
"name": "release",
"configurePreset": "release",
"generators": [
"TGZ"
]
}
],
"workflowPresets": [
{
"description": "Developer workflow without installation",
"name": "debug",
"steps": [
{
"type": "configure",
"name": "debug"
},
{
"type": "build",
"name": "debug"
},
{
"type": "test",
"name": "debug"
}
]
},
{
"description": "Release workflow without test",
"name": "release",
"steps": [
{
"name": "release",
"type": "configure"
},
{
"name": "release",
"type": "build"
},
{
"name": "release",
"type": "test"
},
{
"name": "install",
"type": "build"
},
{
"name": "doxygen-docs",
"type": "build"
},
{
"name": "release",
"type": "package"
}
]
}
]
}
2 changes: 1 addition & 1 deletion Dependencies.cmake
Original file line number Diff line number Diff line change
@@ -33,7 +33,7 @@ function(myproject_setup_dependencies)
endif()

if(NOT TARGET ftxui::screen)
cpmaddpackage("gh:ArthurSonzogni/FTXUI#e23dbc7473654024852ede60e2121276c5aab660")
cpmaddpackage("gh:ArthurSonzogni/FTXUI#dd6a5d371fd7a3e2937bb579955003c54b727233")
endif()

if(NOT TARGET tools::tools)
6 changes: 3 additions & 3 deletions ProjectOptions.cmake
Original file line number Diff line number Diff line change
@@ -53,9 +53,9 @@ macro(myproject_setup_options)
option(myproject_ENABLE_SANITIZER_UNDEFINED "Enable undefined sanitizer" ${SUPPORTS_UBSAN})
option(myproject_ENABLE_SANITIZER_THREAD "Enable thread sanitizer" OFF)
option(myproject_ENABLE_SANITIZER_MEMORY "Enable memory sanitizer" OFF)
option(myproject_ENABLE_UNITY_BUILD "Enable unity builds" OFF)
option(myproject_ENABLE_CLANG_TIDY "Enable clang-tidy" ON)
option(myproject_ENABLE_CPPCHECK "Enable cpp-check analysis" ON)
option(myproject_ENABLE_UNITY_BUILD "Enable unity builds" ON)
option(myproject_ENABLE_CLANG_TIDY "Enable clang-tidy" OFF)
option(myproject_ENABLE_CPPCHECK "Enable cpp-check analysis" OFF)
option(myproject_ENABLE_PCH "Enable precompiled headers" OFF)
option(myproject_ENABLE_CACHE "Enable ccache" ON)
endif()
2 changes: 1 addition & 1 deletion cmake/Doxygen.cmake
Original file line number Diff line number Diff line change
@@ -49,6 +49,6 @@ function(myproject_enable_doxygen DOXYGEN_THEME)

# add doxygen-docs target
message(STATUS "Adding `doxygen-docs` target that builds the documentation.")
doxygen_add_docs(doxygen-docs ALL ${PROJECT_SOURCE_DIR}
doxygen_add_docs(doxygen-docs EXCLUDE_FROM_ALL ${PROJECT_SOURCE_DIR}
COMMENT "Generating documentation - entry file: ${CMAKE_CURRENT_BINARY_DIR}/html/index.html")
endfunction()
2 changes: 1 addition & 1 deletion test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.15...3.23)
cmake_minimum_required(VERSION 3.21...3.27)

project(CmakeConfigPackageTests LANGUAGES CXX)