From a7e1bc69f8a6bcf34b6573b49c0c56050d600992 Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Sun, 27 Aug 2023 10:01:21 +0200 Subject: [PATCH 1/3] Try to use UNITY_BUILD With CMAKE_UNITY_BUILD there are build error with ftxui! Quickfix: don't build ftxui_sample if CMAKE_UNITY_BUILD is set. --- CMakeLists.txt | 2 +- CMakePresets.json | 9 ++++++++- ProjectOptions.cmake | 6 +++--- src/CMakeLists.txt | 4 +++- test/CMakeLists.txt | 20 +++++++++++--------- 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a5ac5435..212bb281 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/CMakePresets.json b/CMakePresets.json index 5871489e..9f16e253 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -50,6 +50,9 @@ "Darwin" ] }, + "cacheVariables": { + "CMAKE_UNITY_BUILD": true + }, "vendor": { "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}" @@ -142,6 +145,8 @@ "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" @@ -164,6 +169,8 @@ "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" @@ -251,4 +258,4 @@ "configurePreset": "unixlike-clang-release" } ] -} \ No newline at end of file +} diff --git a/ProjectOptions.cmake b/ProjectOptions.cmake index 3d260944..136a04af 100644 --- a/ProjectOptions.cmake +++ b/ProjectOptions.cmake @@ -89,9 +89,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() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0f92a9d6..e35378d4 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,2 +1,4 @@ add_subdirectory(sample_library) -add_subdirectory(ftxui_sample) +if(NOT CMAKE_UNITY_BUILD) + add_subdirectory(ftxui_sample) +endif() diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 50f8e633..68cf88fb 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.15...3.23) +cmake_minimum_required(VERSION 3.21...3.27) project(CmakeConfigPackageTests LANGUAGES CXX) @@ -19,15 +19,17 @@ endif() include(${Catch2_SOURCE_DIR}/extras/Catch.cmake) -# Provide a simple smoke test to make sure that the CLI works and can display a --help message -add_test(NAME cli.has_help COMMAND intro --help) +if(TARGET intro) + # Provide a simple smoke test to make sure that the CLI works and can display a --help message + add_test(NAME cli.has_help COMMAND intro --help) -# Provide a test to verify that the version being reported from the application -# matches the version given to CMake. This will be important once you package -# your program. Real world shows that this is the kind of simple mistake that is easy -# to make, but also easy to test for. -add_test(NAME cli.version_matches COMMAND intro --version) -set_tests_properties(cli.version_matches PROPERTIES PASS_REGULAR_EXPRESSION "${PROJECT_VERSION}") + # Provide a test to verify that the version being reported from the application + # matches the version given to CMake. This will be important once you package + # your program. Real world shows that this is the kind of simple mistake that is easy + # to make, but also easy to test for. + add_test(NAME cli.version_matches COMMAND intro --version) + set_tests_properties(cli.version_matches PROPERTIES PASS_REGULAR_EXPRESSION "${PROJECT_VERSION}") +endif() add_executable(tests tests.cpp) target_link_libraries( From e784ea2f9b8ef37dbbeff2183213cf775f5f332c Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Wed, 20 Mar 2024 22:00:03 +0100 Subject: [PATCH 2/3] Restore quickfix after merge --- Dependencies.cmake | 2 +- src/CMakeLists.txt | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Dependencies.cmake b/Dependencies.cmake index e5008c4a..20b8de14 100644 --- a/Dependencies.cmake +++ b/Dependencies.cmake @@ -33,7 +33,7 @@ function(myproject_setup_dependencies) endif() if(NOT TARGET ftxui::screen) - cpmaddpackage("gh:ArthurSonzogni/FTXUI@6.0.2") + cpmaddpackage("gh:ArthurSonzogni/FTXUI@6.1.9") endif() if(NOT TARGET tools::tools) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e35378d4..0f92a9d6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,2 @@ add_subdirectory(sample_library) -if(NOT CMAKE_UNITY_BUILD) - add_subdirectory(ftxui_sample) -endif() +add_subdirectory(ftxui_sample) From c48af0aaae1aa1107cd632c0afcc39893a9828c0 Mon Sep 17 00:00:00 2001 From: ClausKlein Date: Sat, 12 Jul 2025 21:22:21 +0200 Subject: [PATCH 3/3] Rebase and update packages used --- .clang-format | 8 +++++- CMakeLists.txt | 2 +- CMakePresets.json | 62 ++++++++++++++++++++++++++++++++++++++++++++- Dependencies.cmake | 4 +-- cmake/CPM.cmake | 4 +-- test/CMakeLists.txt | 8 ++++-- 6 files changed, 79 insertions(+), 9 deletions(-) diff --git a/.clang-format b/.clang-format index ffd5aa94..1a086d8e 100644 --- a/.clang-format +++ b/.clang-format @@ -1,3 +1,10 @@ +--- +BasedOnStyle: LLVM +Language: Json +IndentWidth: 4 +UseTab: Never +--- +Language: Cpp AccessModifierOffset: -2 AlignAfterOpenBracket: DontAlign AlignConsecutiveAssignments: false @@ -69,7 +76,6 @@ IndentWrappedFunctionNames: true JavaScriptQuotes: Leave JavaScriptWrapImports: true KeepEmptyLinesAtTheStartOfBlocks: true -Language: Cpp MacroBlockBegin: '' MacroBlockEnd: '' MaxEmptyLinesToKeep: 2 diff --git a/CMakeLists.txt b/CMakeLists.txt index 212bb281..6c749982 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.21...3.27) +cmake_minimum_required(VERSION 3.21...4.1) # This template attempts to be "fetch_content"-able # so that it works well with tools like CPM or other diff --git a/CMakePresets.json b/CMakePresets.json index 9f16e253..1bb46324 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -12,7 +12,19 @@ "hidden": true, "generator": "Ninja", "binaryDir": "${sourceDir}/out/build/${presetName}", - "installDir": "${sourceDir}/out/install/${presetName}" + "installDir": "${sourceDir}/out/install/${presetName}", + "cacheVariables": { + "CMAKE_PREFIX_PATH": { + "type": "path", + "value": "${sourceDir}/out/install/${presetName}" + }, + "CMAKE_CXX_EXTENSIONS": false, + "CMAKE_CXX_STANDARD": "23", + "CMAKE_CXX_STANDARD_REQUIRED": true, + "CMAKE_EXPORT_COMPILE_COMMANDS": true, + "CMAKE_MESSAGE_LOG_LEVEL": "TRACE", + "CMAKE_SKIP_TEST_ALL_DEPENDENCY": false + } }, { "name": "conf-windows-common", @@ -188,6 +200,54 @@ } } ], + "buildPresets":[ + { + "name": "build-common", + "description": "Build CMake settings that apply to all configurations", + "hidden": true, + "jobs": 4 + }, + { + "name": "build-windows-msvc-debug-developer-mode", + "inherits": "build-common", + "configurePreset": "windows-msvc-debug-developer-mode" + }, + { + "name": "build-windows-msvc-release-developer-mode", + "inherits": "build-common", + "configurePreset": "windows-msvc-release-developer-mode" + }, + { + "name": "build-windows-clang-debug", + "inherits": "build-common", + "configurePreset": "windows-clang-debug" + }, + { + "name": "build-windows-clang-release", + "inherits": "build-common", + "configurePreset": "windows-clang-release" + }, + { + "name": "build-unixlike-gcc-debug", + "inherits": "build-common", + "configurePreset": "unixlike-gcc-debug" + }, + { + "name": "build-unixlike-gcc-release", + "inherits": "build-common", + "configurePreset": "unixlike-gcc-release" + }, + { + "name": "build-unixlike-clang-debug", + "inherits": "build-common", + "configurePreset": "unixlike-clang-debug" + }, + { + "name": "build-unixlike-clang-release", + "inherits": "build-common", + "configurePreset": "unixlike-clang-release" + } + ], "testPresets": [ { "name": "test-common", diff --git a/Dependencies.cmake b/Dependencies.cmake index 20b8de14..dec189d2 100644 --- a/Dependencies.cmake +++ b/Dependencies.cmake @@ -9,7 +9,7 @@ function(myproject_setup_dependencies) # already been provided to us by a parent project if(NOT TARGET fmtlib::fmtlib) - cpmaddpackage("gh:fmtlib/fmt#11.1.4") + cpmaddpackage("gh:fmtlib/fmt#11.2.0") endif() if(NOT TARGET spdlog::spdlog) @@ -17,7 +17,7 @@ function(myproject_setup_dependencies) NAME spdlog VERSION - 1.15.2 + 1.15.3 GITHUB_REPOSITORY "gabime/spdlog" OPTIONS diff --git a/cmake/CPM.cmake b/cmake/CPM.cmake index 9c27c51c..84748734 100644 --- a/cmake/CPM.cmake +++ b/cmake/CPM.cmake @@ -2,8 +2,8 @@ # # SPDX-FileCopyrightText: Copyright (c) 2019-2023 Lars Melchior and contributors -set(CPM_DOWNLOAD_VERSION 0.40.8) -set(CPM_HASH_SUM "78ba32abdf798bc616bab7c73aac32a17bbd7b06ad9e26a6add69de8f3ae4791") +set(CPM_DOWNLOAD_VERSION 0.42.0) +set(CPM_HASH_SUM "2020b4fc42dba44817983e06342e682ecfc3d2f484a581f11cc5731fbe4dce8a") if(CPM_SOURCE_CACHE) set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake") diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 68cf88fb..b197caf9 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.21...3.27) +cmake_minimum_required(VERSION 3.21...4.1) project(CmakeConfigPackageTests LANGUAGES CXX) @@ -17,7 +17,11 @@ endif() # ---- Dependencies ---- -include(${Catch2_SOURCE_DIR}/extras/Catch.cmake) +if(Catch2_DIR) + include(${Catch2_DIR}/Catch.cmake) +else() + include(${Catch2_SOURCE_DIR}/extras/Catch.cmake) +endif() if(TARGET intro) # Provide a simple smoke test to make sure that the CLI works and can display a --help message