From e7d0e0f53bebf974604146af027aada3fa0d3c1a Mon Sep 17 00:00:00 2001 From: Allen Winter Date: Fri, 9 Aug 2024 09:06:51 -0400 Subject: [PATCH] cmake-lint and cmake-format the project mostly consistent indentation. cmake-format isn't 100% beautiful, but good to enforce a standard. --- .cmake-format.py | 240 ++++++++++++++++++ .krazy | 2 +- CMakeLists.txt | 8 +- docs/CMakeLists.txt | 3 +- docs/api/CMakeLists.txt | 36 +-- examples/01-simple-connection/CMakeLists.txt | 10 +- examples/02-signal-member/CMakeLists.txt | 10 +- examples/03-member-arguments/CMakeLists.txt | 10 +- examples/04-simple-property/CMakeLists.txt | 10 +- examples/05-property-bindings/CMakeLists.txt | 10 +- .../06-lazy-property-bindings/CMakeLists.txt | 10 +- .../07-advanced-connections/CMakeLists.txt | 10 +- .../08-managing-connections/CMakeLists.txt | 10 +- src/kdbindings/CMakeLists.txt | 45 ++-- tests/binding/CMakeLists.txt | 10 +- tests/node/CMakeLists.txt | 10 +- tests/property/CMakeLists.txt | 10 +- tests/signal/CMakeLists.txt | 16 +- tests/utils/CMakeLists.txt | 12 +- 19 files changed, 374 insertions(+), 98 deletions(-) create mode 100644 .cmake-format.py diff --git a/.cmake-format.py b/.cmake-format.py new file mode 100644 index 0000000..a613584 --- /dev/null +++ b/.cmake-format.py @@ -0,0 +1,240 @@ +# ---------------------------------- +# Options affecting listfile parsing +# ---------------------------------- +with section("parse"): + + # Specify structure for custom cmake functions + additional_commands = {'foo': {'flags': ['BAR', 'BAZ'], + 'kwargs': {'DEPENDS': '*', 'HEADERS': '*', 'SOURCES': '*'}}} + + # Override configurations per-command where available + override_spec = {} + + # Specify variable tags. + vartags = [] + + # Specify property tags. + proptags = [] + +# ----------------------------- +# Options affecting formatting. +# ----------------------------- +with section("format"): + + # Disable formatting entirely, making cmake-format a no-op + disable = False + + # How wide to allow formatted cmake files + line_width = 120 + + # How many spaces to tab for indent + tab_size = 2 + + # If true, lines are indented using tab characters (utf-8 0x09) instead of + # space characters (utf-8 0x20). In cases where the layout would + # require a fractional tab character, the behavior of the fractional + # indentation is governed by + use_tabchars = False + + # If is True, then the value of this variable indicates how + # fractional indentions are handled during whitespace replacement. If set to + # 'use-space', fractional indentation is left as spaces (utf-8 0x20). If set + # to `round-up` fractional indentation is replaced with a single tab character + # (utf-8 0x09) effectively shifting the column to the next tabstop + fractional_tab_policy = 'use-space' + + # If an argument group contains more than this many sub-groups (parg or kwarg + # groups) then force it to a vertical layout. + max_subgroups_hwrap = 2 + + # If a positional argument group contains more than this many arguments, then + # force it to a vertical layout. + max_pargs_hwrap = 6 + + # If a cmdline positional group consumes more than this many lines without + # nesting, then invalidate the layout (and nest) + max_rows_cmdline = 2 + + # If true, separate flow control names from their parentheses with a space + separate_ctrl_name_with_space = False + + # If true, separate function names from parentheses with a space + separate_fn_name_with_space = False + + # If a statement is wrapped to more than one line, than dangle the closing + # parenthesis on its own line. + dangle_parens = True + + # If the trailing parenthesis must be 'dangled' on its on line, then align it + # to this reference: `prefix`: the start of the statement, `prefix-indent`: + # the start of the statement, plus one indentation level, `child`: align to + # the column of the arguments + dangle_align = 'prefix' + + # If the statement spelling length (including space and parenthesis) is + # smaller than this amount, then force reject nested layouts. + min_prefix_chars = 4 + + # If the statement spelling length (including space and parenthesis) is larger + # than the tab width by more than this amount, then force reject un-nested + # layouts. + max_prefix_chars = 10 + + # If a candidate layout is wrapped horizontally but it exceeds this many + # lines, then reject the layout. + max_lines_hwrap = 2 + + # What style line endings to use in the output. + line_ending = 'unix' + + # Format command names consistently as 'lower' or 'upper' case + command_case = 'lower' + + # Format keywords consistently as 'lower' or 'upper' case + keyword_case = 'upper' + + # A list of command names which should always be wrapped + always_wrap = [] + + # If true, the argument lists which are known to be sortable will be sorted + # lexicographicall + enable_sort = True + + # If true, the parsers may infer whether or not an argument list is sortable + # (without annotation). + autosort = False + + # By default, if cmake-format cannot successfully fit everything into the + # desired linewidth it will apply the last, most agressive attempt that it + # made. If this flag is True, however, cmake-format will print error, exit + # with non-zero status code, and write-out nothing + require_valid_layout = False + + # A dictionary mapping layout nodes to a list of wrap decisions. See the + # documentation for more information. + layout_passes = {} + +# ------------------------------------------------ +# Options affecting comment reflow and formatting. +# ------------------------------------------------ +with section("markup"): + + # What character to use for bulleted lists + bullet_char = '*' + + # What character to use as punctuation after numerals in an enumerated list + enum_char = '.' + + # If comment markup is enabled, don't reflow the first comment block in each + # listfile. Use this to preserve formatting of your copyright/license + # statements. + first_comment_is_literal = False + + # If comment markup is enabled, don't reflow any comment block which matches + # this (regex) pattern. Default is `None` (disabled). + literal_comment_pattern = None + + # Regular expression to match preformat fences in comments default= + # ``r'^\s*([`~]{3}[`~]*)(.*)$'`` + fence_pattern = '^\\s*([`~]{3}[`~]*)(.*)$' + + # Regular expression to match rulers in comments default= + # ``r'^\s*[^\w\s]{3}.*[^\w\s]{3}$'`` + ruler_pattern = '^\\s*[^\\w\\s]{3}.*[^\\w\\s]{3}$' + + # If a comment line matches starts with this pattern then it is explicitly a + # trailing comment for the preceeding argument. Default is '#<' + explicit_trailing_pattern = '#<' + + # If a comment line starts with at least this many consecutive hash + # characters, then don't lstrip() them off. This allows for lazy hash rulers + # where the first hash char is not separated by space + hashruler_min_length = 10 + + # If true, then insert a space between the first hash char and remaining hash + # chars in a hash ruler, and normalize its length to fill the column + canonicalize_hashrulers = True + + # enable comment markup parsing and reflow + enable_markup = False + +# ---------------------------- +# Options affecting the linter +# ---------------------------- +with section("lint"): + + # a list of lint codes to disable + disabled_codes = [] + + # regular expression pattern describing valid function names + function_pattern = '[0-9A-Za-z_]+' + + # regular expression pattern describing valid macro names + macro_pattern = '[0-9a-z_]+' + + # regular expression pattern describing valid names for variables with global + # (cache) scope + global_var_pattern = '[A-Z][0-9A-Z_]+' + + # regular expression pattern describing valid names for variables with global + # scope (but internal semantic) + internal_var_pattern = '[A-Z][0-9A-Z_]+' + + # regular expression pattern describing valid names for variables with local + # scope + local_var_pattern = '[_A-Za-z][A-Za-z0-9_]+' + + # regular expression pattern describing valid names for privatedirectory + # variables + private_var_pattern = '[0-9a-z_]+' + + # regular expression pattern describing valid names for public directory + # variables + public_var_pattern = '.*' + + # regular expression pattern describing valid names for function/macro + # arguments and loop variables. + argument_var_pattern = '[a-z_][a-z0-9_]+' + + # regular expression pattern describing valid names for keywords used in + # functions or macros + keyword_pattern = '[A-Z][0-9A-Z_]+' + + # In the heuristic for C0201, how many conditionals to match within a loop in + # before considering the loop a parser. + max_conditionals_custom_parser = 2 + + # Require at least this many newlines between statements + min_statement_spacing = 1 + + # Require no more than this many newlines between statements + max_statement_spacing = 2 + max_returns = 6 + max_branches = 15 + max_arguments = 10 + max_localvars = 15 + max_statements = 50 + +# ------------------------------- +# Options affecting file encoding +# ------------------------------- +with section("encode"): + + # If true, emit the unicode byte-order mark (BOM) at the start of the file + emit_byteorder_mark = False + + # Specify the encoding of the input file. Defaults to utf-8 + input_encoding = 'utf-8' + + # Specify the encoding of the output file. Defaults to utf-8. Note that cmake + # only claims to support utf-8 so be careful when using anything else + output_encoding = 'utf-8' + +# ------------------------------------- +# Miscellaneous configurations options. +# ------------------------------------- +with section("misc"): + + # A dictionary containing any per-command configuration overrides. Currently + # only `command_case` is supported. + per_command = {} diff --git a/.krazy b/.krazy index 725f465..dd9b5d0 100644 --- a/.krazy +++ b/.krazy @@ -23,6 +23,6 @@ SKIP /mkdocs.yml.cmake SKIP /KDBindingsConfig.cmake.in #skip more files SKIP CMakePresets.json +SKIP \.cmake-format\.py #skip the borrowed code in the cmake subdir SKIP /cmake/ECM/|/cmake/InstallLocation.cmake - diff --git a/CMakeLists.txt b/CMakeLists.txt index cc97440..bc880a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,8 @@ cmake_minimum_required(VERSION 3.12) # for `project(... HOMEPAGE_URL ...)` -project(KDBindings +project( + KDBindings DESCRIPTION "Bindings, from the comfort and speed of C++ and without Qt" LANGUAGES CXX VERSION 1.0.95 @@ -54,7 +55,10 @@ if(EXISTS "${CMAKE_SOURCE_DIR}/.git") endif() if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) message(STATUS "Setting build type to ${default_build_type} as none was specified.") - set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE) + set(CMAKE_BUILD_TYPE + "${default_build_type}" + CACHE STRING "Choose the type of build." FORCE + ) # Set the possible values of build type for cmake-gui set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") endif() diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 1c56d21..d3cd58d 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -10,7 +10,8 @@ # Doxygen find_package(Doxygen) -set_package_properties(Doxygen PROPERTIES +set_package_properties( + Doxygen PROPERTIES TYPE OPTIONAL DESCRIPTION "API Documentation system" URL "https://www.doxygen.org" diff --git a/docs/api/CMakeLists.txt b/docs/api/CMakeLists.txt index 2b324f7..04fb5c1 100644 --- a/docs/api/CMakeLists.txt +++ b/docs/api/CMakeLists.txt @@ -10,14 +10,14 @@ # dot should come with Doxygen find_package(Doxygen) if(DOXYGEN_DOT_EXECUTABLE) - set(HAVE_DOT "YES") + set(HAVE_DOT "YES") else() - # cmake-lint: disable=C0301 - set(HAVE_DOT "NO") - message( - STATUS - "Unable to provide inheritance diagrams for the API documentation. To fix, install the graphviz project from https://www.graphviz.org" - ) + # cmake-lint: disable=C0301 + set(HAVE_DOT "NO") + message( + STATUS + "Unable to provide inheritance diagrams for the API documentation. To fix, install the graphviz project from https://www.graphviz.org" + ) endif() file(GLOB _dox_deps *.dox *.html) @@ -27,19 +27,19 @@ set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.cmake ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) add_custom_target( - docs - # Execute Doxygen - COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/docs ${DOXYGEN_OUTPUT_DIR}/docs - # copy some files by-hand that are referred to by the markdown README. - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/LICENSES/MIT.txt - ${DOXYGEN_OUTPUT_DIR}/docs/license.md - DEPENDS ${_dox_deps} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - COMMENT "Building Documentation" + docs + # Execute Doxygen + COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/docs ${DOXYGEN_OUTPUT_DIR}/docs + # copy some files by-hand that are referred to by the markdown README. + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_SOURCE_DIR}/LICENSES/MIT.txt + ${DOXYGEN_OUTPUT_DIR}/docs/license.md + DEPENDS ${_dox_deps} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMENT "Building Documentation" ) # The tags file is only created when 'make docs' is run first if(EXISTS "${DOXYGEN_OUTPUT_DIR}/kdbindings.tags") - install(FILES ${DOXYGEN_OUTPUT_DIR}/kdbindings.tags DESTINATION ${INSTALL_DOC_DIR}) + install(FILES ${DOXYGEN_OUTPUT_DIR}/kdbindings.tags DESTINATION ${INSTALL_DOC_DIR}) endif() diff --git a/examples/01-simple-connection/CMakeLists.txt b/examples/01-simple-connection/CMakeLists.txt index 43956b7..0519ef9 100644 --- a/examples/01-simple-connection/CMakeLists.txt +++ b/examples/01-simple-connection/CMakeLists.txt @@ -8,9 +8,11 @@ # Contact KDAB at for commercial licensing options. # -project(01-simple-connection VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - main.cpp +project( + 01-simple-connection + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) diff --git a/examples/02-signal-member/CMakeLists.txt b/examples/02-signal-member/CMakeLists.txt index 031116d..3c58775 100644 --- a/examples/02-signal-member/CMakeLists.txt +++ b/examples/02-signal-member/CMakeLists.txt @@ -8,9 +8,11 @@ # Contact KDAB at for commercial licensing options. # -project(02-signal-member VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - main.cpp +project( + 02-signal-member + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) diff --git a/examples/03-member-arguments/CMakeLists.txt b/examples/03-member-arguments/CMakeLists.txt index bbf45b7..d7254b0 100644 --- a/examples/03-member-arguments/CMakeLists.txt +++ b/examples/03-member-arguments/CMakeLists.txt @@ -8,9 +8,11 @@ # Contact KDAB at for commercial licensing options. # -project(03-member-arguments VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - main.cpp +project( + 03-member-arguments + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) diff --git a/examples/04-simple-property/CMakeLists.txt b/examples/04-simple-property/CMakeLists.txt index 004728e..e9b65ea 100644 --- a/examples/04-simple-property/CMakeLists.txt +++ b/examples/04-simple-property/CMakeLists.txt @@ -8,9 +8,11 @@ # Contact KDAB at for commercial licensing options. # -project(04-simple-property VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - main.cpp +project( + 04-simple-property + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) diff --git a/examples/05-property-bindings/CMakeLists.txt b/examples/05-property-bindings/CMakeLists.txt index 4d9631e..3c7033a 100644 --- a/examples/05-property-bindings/CMakeLists.txt +++ b/examples/05-property-bindings/CMakeLists.txt @@ -8,9 +8,11 @@ # Contact KDAB at for commercial licensing options. # -project(05-property-bindings VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - main.cpp +project( + 05-property-bindings + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) diff --git a/examples/06-lazy-property-bindings/CMakeLists.txt b/examples/06-lazy-property-bindings/CMakeLists.txt index b0d55bf..1a8538b 100644 --- a/examples/06-lazy-property-bindings/CMakeLists.txt +++ b/examples/06-lazy-property-bindings/CMakeLists.txt @@ -8,9 +8,11 @@ # Contact KDAB at for commercial licensing options. # -project(06-lazy-property-bindings VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - main.cpp +project( + 06-lazy-property-bindings + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) diff --git a/examples/07-advanced-connections/CMakeLists.txt b/examples/07-advanced-connections/CMakeLists.txt index ea337b0..ae9ac50 100644 --- a/examples/07-advanced-connections/CMakeLists.txt +++ b/examples/07-advanced-connections/CMakeLists.txt @@ -8,9 +8,11 @@ # Contact KDAB at for commercial licensing options. # -project(07-advanced-connections VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - main.cpp +project( + 07-advanced-connections + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) diff --git a/examples/08-managing-connections/CMakeLists.txt b/examples/08-managing-connections/CMakeLists.txt index b3fdb89..9a4c352 100644 --- a/examples/08-managing-connections/CMakeLists.txt +++ b/examples/08-managing-connections/CMakeLists.txt @@ -8,9 +8,11 @@ # Contact KDAB at for commercial licensing options. # -project(08-managing-connections VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - main.cpp +project( + 08-managing-connections + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} main.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) diff --git a/src/kdbindings/CMakeLists.txt b/src/kdbindings/CMakeLists.txt index 1cefcc4..ec3a843 100644 --- a/src/kdbindings/CMakeLists.txt +++ b/src/kdbindings/CMakeLists.txt @@ -31,9 +31,7 @@ else() endif() add_library(KDAB::KDBindings ALIAS KDBindings) -set_target_properties(KDBindings PROPERTIES - INTERFACE_COMPILE_FEATURES cxx_std_17 -) +set_target_properties(KDBindings PROPERTIES INTERFACE_COMPILE_FEATURES cxx_std_17) if(KDBindings_ENABLE_WARN_UNUSED) target_compile_definitions(KDBindings INTERFACE KDBINDINGS_ENABLE_WARN_UNUSED=1) @@ -42,9 +40,8 @@ if(KDBindings_QT_NO_EMIT) target_compile_definitions(KDBindings INTERFACE QT_NO_EMIT) endif() -target_include_directories(KDBindings INTERFACE - $ - $ +target_include_directories( + KDBindings INTERFACE $ $ ) if(KDBindings_ERROR_ON_WARNING) if(MSVC) @@ -58,35 +55,45 @@ endif() include(ECMSetupVersion) ecm_setup_version( ${PROJECT_VERSION} - VARIABLE_PREFIX KDBINDINGS - VERSION_HEADER "${CMAKE_BINARY_DIR}/kdbindings_version.h" - PACKAGE_VERSION_FILE "${PROJECT_BINARY_DIR}/KDBindingsConfigVersion.cmake" - COMPATIBILITY AnyNewerVersion + VARIABLE_PREFIX + KDBINDINGS + VERSION_HEADER + "${CMAKE_BINARY_DIR}/kdbindings_version.h" + PACKAGE_VERSION_FILE + "${PROJECT_BINARY_DIR}/KDBindingsConfigVersion.cmake" + COMPATIBILITY + AnyNewerVersion ) install(FILES "${CMAKE_BINARY_DIR}/kdbindings_version.h" DESTINATION ${INSTALL_INCLUDE_DIR}/kdbindings) install(FILES ${HEADERS} DESTINATION ${INSTALL_INCLUDE_DIR}/kdbindings) configure_package_config_file( - "${PROJECT_SOURCE_DIR}/cmake/KDBindingsConfig.cmake.in" - "${PROJECT_BINARY_DIR}/KDBindingsConfig.cmake" + "${PROJECT_SOURCE_DIR}/cmake/KDBindingsConfig.cmake.in" "${PROJECT_BINARY_DIR}/KDBindingsConfig.cmake" INSTALL_DESTINATION "${INSTALL_LIBRARY_DIR}/cmake/KDBindings" PATH_VARS INSTALL_INCLUDE_DIR ) -install(FILES - "${PROJECT_BINARY_DIR}/KDBindingsConfig.cmake" - "${PROJECT_BINARY_DIR}/KDBindingsConfigVersion.cmake" - DESTINATION "${INSTALL_LIBRARY_DIR}/cmake/KDBindings" +install(FILES "${PROJECT_BINARY_DIR}/KDBindingsConfig.cmake" "${PROJECT_BINARY_DIR}/KDBindingsConfigVersion.cmake" + DESTINATION "${INSTALL_LIBRARY_DIR}/cmake/KDBindings" ) -export(TARGETS KDBindings NAMESPACE KDAB:: +export( + TARGETS KDBindings + NAMESPACE KDAB:: FILE "${PROJECT_BINARY_DIR}/KDBindingsTargets.cmake" ) -install(TARGETS KDBindings EXPORT KDBindingsTargets +install( + TARGETS KDBindings + EXPORT KDBindingsTargets LIBRARY DESTINATION ${INSTALL_LIBRARY_DIR} ARCHIVE DESTINATION ${INSTALL_ARCHIVE_DIR} RUNTIME DESTINATION ${INSTALL_RUNTIME_DIR} ) -install(EXPORT KDBindingsTargets DESTINATION ${INSTALL_LIBRARY_DIR}/cmake/KDBindings NAMESPACE KDAB:: FILE KDBindingsTargets.cmake) +install( + EXPORT KDBindingsTargets + DESTINATION ${INSTALL_LIBRARY_DIR}/cmake/KDBindings + NAMESPACE KDAB:: + FILE KDBindingsTargets.cmake +) diff --git a/tests/binding/CMakeLists.txt b/tests/binding/CMakeLists.txt index 228f497..577a03c 100644 --- a/tests/binding/CMakeLists.txt +++ b/tests/binding/CMakeLists.txt @@ -8,11 +8,13 @@ # Contact KDAB at for commercial licensing options. # -project(test-binding VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - tst_binding.cpp +project( + test-binding + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} tst_binding.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) add_test(${PROJECT_NAME} ${PROJECT_NAME}) diff --git a/tests/node/CMakeLists.txt b/tests/node/CMakeLists.txt index 9693355..43215cf 100644 --- a/tests/node/CMakeLists.txt +++ b/tests/node/CMakeLists.txt @@ -8,11 +8,13 @@ # Contact KDAB at for commercial licensing options. # -project(test-node VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - tst_node.cpp +project( + test-node + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} tst_node.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) add_test(${PROJECT_NAME} ${PROJECT_NAME}) diff --git a/tests/property/CMakeLists.txt b/tests/property/CMakeLists.txt index f035c01..246defa 100644 --- a/tests/property/CMakeLists.txt +++ b/tests/property/CMakeLists.txt @@ -8,11 +8,13 @@ # Contact KDAB at for commercial licensing options. # -project(test-property VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - tst_property.cpp +project( + test-property + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} tst_property.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) add_test(${PROJECT_NAME} ${PROJECT_NAME}) diff --git a/tests/signal/CMakeLists.txt b/tests/signal/CMakeLists.txt index 39141a9..598e9af 100644 --- a/tests/signal/CMakeLists.txt +++ b/tests/signal/CMakeLists.txt @@ -8,12 +8,14 @@ # Contact KDAB at for commercial licensing options. # -project(test-signal VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - tst_signal.cpp +project( + test-signal + VERSION 0.1 + LANGUAGES CXX ) +add_executable(${PROJECT_NAME} tst_signal.cpp) + target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) # For some reason, CMake with gcc doesn't automatically include the pthread library @@ -21,9 +23,9 @@ target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) # IMHO, this is ridiculous, std::thread is part of the standard library, it should just work # when I use C++, but it is what it is. # See: https://cmake.cmake.narkive.com/wWDhK9RQ/undefined-reference-to-pthread-create -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - find_package (Threads) - target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT}) +if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + find_package(Threads) + target_link_libraries(${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT}) endif() add_test(${PROJECT_NAME} ${PROJECT_NAME}) diff --git a/tests/utils/CMakeLists.txt b/tests/utils/CMakeLists.txt index e70e7c0..24cb0cf 100644 --- a/tests/utils/CMakeLists.txt +++ b/tests/utils/CMakeLists.txt @@ -8,13 +8,13 @@ # Contact KDAB at for commercial licensing options. # -project(test-utils VERSION 0.1 LANGUAGES CXX) - -add_executable(${PROJECT_NAME} - tst_gen_index_array.cpp - tst_get_arity.cpp - tst_utils_main.cpp +project( + test-utils + VERSION 0.1 + LANGUAGES CXX ) + +add_executable(${PROJECT_NAME} tst_gen_index_array.cpp tst_get_arity.cpp tst_utils_main.cpp) target_link_libraries(${PROJECT_NAME} KDAB::KDBindings) add_test(${PROJECT_NAME} ${PROJECT_NAME})