diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake index 1244ef4baf4..029546fd65d 100644 --- a/cmake/QtBaseGlobalTargets.cmake +++ b/cmake/QtBaseGlobalTargets.cmake @@ -85,7 +85,7 @@ if(QT_WILL_INSTALL) endforeach() endif() -set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS +_qt_internal_append_cmake_configure_depends( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/QtBuildInternals/${__build_internals_standalone_test_template_dir}/CMakeLists.txt" ${__build_internals_extra_files} ) diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake index b1115d61e8f..2f260d90f04 100644 --- a/cmake/QtModuleHelpers.cmake +++ b/cmake/QtModuleHelpers.cmake @@ -807,7 +807,7 @@ set(QT_ALLOW_MISSING_TOOLS_PACKAGES TRUE)") ) # Make sure touched extra cmake files cause a reconfigure, so they get re-copied. - set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${cmake_file}") + _qt_internal_append_cmake_configure_depends("${cmake_file}") endforeach() list(APPEND extra_cmake_includes ${arg_EXTRA_CMAKE_INCLUDES}) diff --git a/cmake/QtPublicCMakeHelpers.cmake b/cmake/QtPublicCMakeHelpers.cmake index 43c744905f0..2027a06174e 100644 --- a/cmake/QtPublicCMakeHelpers.cmake +++ b/cmake/QtPublicCMakeHelpers.cmake @@ -956,3 +956,15 @@ function(_qt_internal_is_c_identifier out_var value) set(${out_var} "FALSE" PARENT_SCOPE) endif() endfunction() + +# Makes appending of the CMake configure time dependencies unique. +function(_qt_internal_append_cmake_configure_depends) + get_property(configure_depends DIRECTORY PROPERTY CMAKE_CONFIGURE_DEPENDS) + foreach(path IN LISTS ARGN) + get_filename_component(abs_path "${path}" REALPATH) + if(NOT "${abs_path}" IN_LIST configure_depends) + list(APPEND configure_depends "${abs_path}") + endif() + endforeach() + set_property(DIRECTORY PROPERTY CMAKE_CONFIGURE_DEPENDS "${configure_depends}") +endfunction() diff --git a/cmake/QtPublicSbomHelpers.cmake b/cmake/QtPublicSbomHelpers.cmake index 12bcbc6e48f..101df1df75a 100644 --- a/cmake/QtPublicSbomHelpers.cmake +++ b/cmake/QtPublicSbomHelpers.cmake @@ -432,8 +432,7 @@ function(_qt_internal_sbom_end_project) # Add configure-time dependency on project attribution files. get_property(attribution_files GLOBAL PROPERTY _qt_internal_project_attribution_files) - list(REMOVE_DUPLICATES attribution_files) - set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${attribution_files}") + _qt_internal_append_cmake_configure_depends(${attribution_files}) endfunction() # Automatically begins sbom generation for a qt git repo unless QT_SKIP_SBOM_AUTO_PROJECT is TRUE. diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 176bbf921bb..47289e965c8 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -19,7 +19,7 @@ foreach(dir global config) # dependencies should be set up in that case (coarsness, use install vs build dirs, # etc). file(GLOB_RECURSE files LIST_DIRECTORIES FALSE "${dir}/*") - set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${files}) + _qt_internal_append_cmake_configure_depends(${files}) endif() endif() endforeach()