diff --git a/.cmake-format.py b/.cmake-format.py
index 468731cdffd0eda26eee1786b2c20bcf1bb538ef..32c6f98a1eddd0bd769310ff70afb6f6a71f0037 100644
--- a/.cmake-format.py
+++ b/.cmake-format.py
@@ -6,14 +6,14 @@
 with section("parse"):  # noqa: F821
     additional_commands = {
         "mtime_add_example": {
-            "kwargs": {"ARG": 1},
-            "pargs": {"flags": ["2"], "nargs": "2+"},
+            "pargs": 2,
+            "kwargs": {"LIBRARIES": "*", "DEPENDS": "*"},
         }
     }
 
 with section("format"):  # noqa: F821
-    max_pargs_hwrap = 4
-    always_wrap = ["add_library"]
+    dangle_parens = True
+    max_lines_hwrap = 0
     keyword_case = "upper"
     autosort = True
 
@@ -21,7 +21,20 @@ with section("markup"):  # noqa: F821
     first_comment_is_literal = True
 
 with section("lint"):  # noqa: F821
-    disabled_codes = ["C0111", "C0103", "C0113", "C0301"]
+    # The formatter sometimes fails to fit the code into the line limit (C0301)
+    # and can disagree with the linter regarding the indentation (C0307):
+    disabled_codes = ["C0301", "C0307"]
+    # TODO: do not tolerate the following errors:
+    disabled_codes.extend(["C0111", "C0113"])
+    # Names of local variables must be in lowercase but sometimes we need to
+    # override standard CMake variables:
+    local_var_pattern = "CMAKE_[0-9A-Z_]+|[a-z][0-9a-z_]+"
+    # The standard names of the languages in CMake are C and Fortran. Names of
+    # private variables must be in lowercase but can have substings "C" and
+    # "Fortran":
+    private_var_pattern = (
+        "([a-z_][0-9a-z_]*_)?(C|Fortran)(_[a-z_][0-9a-z_]*)?|[a-z_][0-9a-z_]+"
+    )
     # The standard name of the language in CMake is Fortran. Names of public
     # variables must be in uppercase but can have substring "Fortran":
     public_var_pattern = (
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
index 68aa220c7a6be73a1628461dbde2dbcf8fb678c4..03396833dd004de58aa7fcca3552b3281702fced 100644
--- a/.git-blame-ignore-revs
+++ b/.git-blame-ignore-revs
@@ -18,5 +18,8 @@ f913b91b554cfb59a5734f34b62656f4a623e0dd
 # Formatted Python code in the src directory with isort and black
 acb430c56641057e83765c3662c69c2fbc3c84af
 
-# Formatted entire CMake code base with cmake-fortmat
+# Formatted entire CMake code base with cmake-format
 b34d40a92a6a4508e37705bd0d71b0e95be748b5
+
+# Reformatted entire CMake code base with updated configuration
+e952f9224ade9bfc438d47cf8675a4e3e175b582
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 13d0e442560cbe6c9723e076049ee9885ce31fd3..e55a6bd71ce55771c6380a3a9871427b54b4e185 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -62,7 +62,7 @@ Check style:
     - isort ${python_files} --profile black --skip-gitignore --line-length ${python_line_length}
     - black ${python_files} --line-length ${python_line_length}
 
-    - cmake_files=$(find "${CI_PROJECT_DIR}" -name '*.cmake' -o -name 'CMakeLists.txt')
+    - cmake_files=$(find "${CI_PROJECT_DIR}" -name '*.cmake' -o -name 'CMakeLists.txt' -o -name 'config.cmake.in')
     - cmake-format -i ${cmake_files}
 
     - git -C ${CI_PROJECT_DIR} diff --patch-with-raw > ${STYLE_PATCH}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 024d1709874d818444594b5353a9edb0d229f10c..663815c1817b5a294c2decbf6eef2d8aa06df366 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,8 @@ cmake_minimum_required(VERSION 3.18)
 project(
   mtime
   VERSION 1.2.2
-  LANGUAGES Fortran C)
+  LANGUAGES Fortran C
+)
 
 option(BUILD_TESTING "Build tests" ON)
 option(BUILD_EXAMPLES "Build examples" ON)
@@ -23,8 +24,9 @@ if(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
   add_compile_options($<$<COMPILE_LANGUAGE:Fortran>:-ffree-line-length-none>)
 endif()
 
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
-               ${CMAKE_CURRENT_BINARY_DIR}/config.h)
+configure_file(
+  ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h
+)
 
 include(GNUInstallDirs)
 
@@ -44,24 +46,32 @@ if(BUILD_DOCUMENTATION)
   add_subdirectory(doc)
 endif()
 
-export(EXPORT "${PROJECT_NAME}-targets"
-       FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake")
+export(
+  EXPORT "${PROJECT_NAME}-targets"
+  FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake"
+)
 
 include(CMakePackageConfigHelpers)
 configure_package_config_file(
   "${PROJECT_SOURCE_DIR}/cmake/config.cmake.in"
   "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
   INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake"
-  NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+  NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO
+)
 
 write_basic_package_version_file(
   "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
   VERSION "${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}"
-  COMPATIBILITY AnyNewerVersion)
-
-install(EXPORT "${PROJECT_NAME}-targets"
-        DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake")
-
-install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
-              "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
-        DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake")
+  COMPATIBILITY AnyNewerVersion
+)
+
+install(
+  EXPORT "${PROJECT_NAME}-targets"
+  DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake"
+)
+
+install(
+  FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
+        "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
+  DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/cmake"
+)
diff --git a/cmake/config.cmake.in b/cmake/config.cmake.in
index 01ef3506c6a2cb912eda7c6170db3ffb66ceecc3..f15441eab2902dca31d2832479ecd0a823ef6500 100644
--- a/cmake/config.cmake.in
+++ b/cmake/config.cmake.in
@@ -8,4 +8,6 @@
 include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")
 
 include(FindPackageHandleStandardArgs)
-find_package_handle_standard_args(@PROJECT_NAME@ REQUIRED_VARS @PROJECT_NAME@_DIR)
+find_package_handle_standard_args(
+  @PROJECT_NAME@ REQUIRED_VARS @PROJECT_NAME@_DIR
+)
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 0aaa15e2745a69bcd4520eb2acb72634dfecf724..ce4098e1ef81a66a070b9ceb7ac9708adde4bb60 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -12,7 +12,8 @@ set(DX_DOCDIR "doxygen-doc")
 set(top_srcdir "${PROJECT_SOURCE_DIR}")
 set(srcdir "${CMAKE_CURRENT_SOURCE_DIR}")
 
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
-               ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
+configure_file(
+  ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
+)
 
 add_custom_target(doc COMMAND doxygen Doxyfile)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index be25e6c1823ed49e2413861c6096b6def3e5a23c..e3336f5fc98b5792ca678200c34f9a6bdd47a060 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -13,17 +13,19 @@ mtime_add_example(duration duration.f90 DEPENDS mo_kind.f90)
 
 mtime_add_example(example example.f90)
 
-add_library(
-  mtime_event_manager
-  mo_event_manager.f90)
+add_library(mtime_event_manager mo_event_manager.f90)
 target_link_libraries(mtime_event_manager PUBLIC mtime::mtime)
 
-file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/iconatm.nml"
-     DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
+file(
+  COPY "${CMAKE_CURRENT_SOURCE_DIR}/iconatm.nml"
+  DESTINATION "${CMAKE_CURRENT_BINARY_DIR}"
+)
 mtime_add_example(iconatm iconatm.f90 LIBRARIES mtime_event_manager)
 
-file(COPY "${CMAKE_CURRENT_SOURCE_DIR}/iconoce.nml"
-     DESTINATION "${CMAKE_CURRENT_BINARY_DIR}")
+file(
+  COPY "${CMAKE_CURRENT_SOURCE_DIR}/iconoce.nml"
+  DESTINATION "${CMAKE_CURRENT_BINARY_DIR}"
+)
 mtime_add_example(iconoce iconoce.f90 LIBRARIES mtime_event_manager)
 
 mtime_add_example(model_integration model_integration.c)
diff --git a/examples/example_helper.cmake b/examples/example_helper.cmake
index 77568ef465801b5bd83b33b8d70f6a5079e26ae3..0e763eb2196fe666bf8cab21b8d0233d902a765e 100644
--- a/examples/example_helper.cmake
+++ b/examples/example_helper.cmake
@@ -5,13 +5,7 @@
 
 function(mtime_add_example test_name file_name)
 
-  cmake_parse_arguments(
-    PARSE_ARGV
-    2
-    ARG
-    ""
-    ""
-    "LIBRARIES;DEPENDS")
+  cmake_parse_arguments(PARSE_ARGV 2 ARG "" "" "LIBRARIES;DEPENDS")
 
   add_executable("${test_name}" ${file_name} ${ARG_DEPENDS})
   target_link_libraries("${test_name}" PRIVATE mtime::mtime ${ARG_LIBRARIES})
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 42e3a931e7e890b1cf6f66faca238d74012186ae..bff707f6a9029347145435117cc149d187214556 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -29,10 +29,10 @@ add_library(
   mtime_timedelta.c
   mtime_utilities.c
   orbit.c
-  vsop87.c)
+  vsop87.c
+)
 
-add_library(
-  ${PROJECT_NAME}::mtime ALIAS mtime)
+add_library(${PROJECT_NAME}::mtime ALIAS mtime)
 
 set(Fortran_MODULE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/mod")
 set_target_properties(
@@ -41,7 +41,8 @@ set_target_properties(
              Fortran_MODULE_DIRECTORY "${Fortran_MODULE_DIRECTORY}"
              C_STANDARD 99
              C_STANDARD_REQUIRED ON
-             EXPORT_NAME ${PROJECT_NAME}::mtime)
+             EXPORT_NAME ${PROJECT_NAME}::mtime
+)
 
 target_include_directories(
   mtime
@@ -51,9 +52,12 @@ target_include_directories(
     $<INSTALL_INTERFACE:$<$<COMPILE_LANGUAGE:Fortran>:${CMAKE_INSTALL_INCLUDEDIR}>>
     # Path to the C headers:
     $<BUILD_INTERFACE:$<$<COMPILE_LANGUAGE:C>:${PROJECT_SOURCE_DIR}/include>>
-    $<INSTALL_INTERFACE:$<$<COMPILE_LANGUAGE:C>:${CMAKE_INSTALL_INCLUDEDIR}>>)
+    $<INSTALL_INTERFACE:$<$<COMPILE_LANGUAGE:C>:${CMAKE_INSTALL_INCLUDEDIR}>>
+)
 
 install(TARGETS mtime EXPORT "${PROJECT_NAME}-targets")
 
-install(DIRECTORY "${Fortran_MODULE_DIRECTORY}/"
-                  "${PROJECT_SOURCE_DIR}/include/" TYPE INCLUDE)
+install(
+  DIRECTORY "${Fortran_MODULE_DIRECTORY}/" "${PROJECT_SOURCE_DIR}/include/"
+  TYPE INCLUDE
+)
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 1afe09f21472fd31ca4ff6368a9a051745132d70..ab6466ef12d9c68765d4df3aeeca5831a6d7d916 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -7,15 +7,18 @@ find_path(
   Check_INCLUDE_DIRS
   NAMES check.h
   HINTS ${Check_DIR} ENV Check_DIR
-  PATH_SUFFIXES include src)
+  PATH_SUFFIXES include src
+)
 find_library(
   Check_LIBRARIES check
   HINTS ${Check_DIR} ENV Check_DIR
-  PATH_SUFFIXES lib lib64)
+  PATH_SUFFIXES lib lib64
+)
 find_library(
   Subunit_LIBRARIES subunit
   HINTS ${Check_DIR} ENV Check_DIR
-  PATH_SUFFIXES lib lib64)
+  PATH_SUFFIXES lib lib64
+)
 
 if(Check_INCLUDE_DIRS)
   message(STATUS "Found check.h in ${Check_INCLUDE_DIRS}")
@@ -29,13 +32,13 @@ else()
   message(WARNING "libcheck not found")
 endif()
 
-add_library(
-  Check::check UNKNOWN IMPORTED)
+add_library(Check::check UNKNOWN IMPORTED)
 set_target_properties(
   Check::check
   PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${Check_INCLUDE_DIRS}"
              IMPORTED_LINK_INTERFACE_LANGUAGES "C"
-             IMPORTED_LOCATION "${Check_LIBRARIES}")
+             IMPORTED_LOCATION "${Check_LIBRARIES}"
+)
 
 add_library(
   mtime_check
@@ -44,7 +47,8 @@ add_library(
   mtime_datetime_test.c
   mtime_julianDay_test.c
   mtime_time_test.c
-  mtime_timedelta_test.c)
+  mtime_timedelta_test.c
+)
 
 target_include_directories(mtime_check PUBLIC ${PROJECT_BINARY_DIR})