From 8fe9cabe16ed995539e2adaf8d5693662008eb96 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Thu, 7 Mar 2024 18:02:56 +0100 Subject: [PATCH] CMake: Add functions to safely append to cmake properties Encapsulate the boilerplate logic of querying a property and setting it to an empty string instead of NOTFOUND, before appending a value, removing duplicates and assigning the values back to the property. Change-Id: I7aefd11e9bdd77090324ec50c682d62181d22076 Reviewed-by: Alexey Edelev --- cmake/QtPublicCMakeHelpers.cmake | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/cmake/QtPublicCMakeHelpers.cmake b/cmake/QtPublicCMakeHelpers.cmake index 995b07de669..329acd0c1ea 100644 --- a/cmake/QtPublicCMakeHelpers.cmake +++ b/cmake/QtPublicCMakeHelpers.cmake @@ -580,3 +580,25 @@ function(_qt_internal_remove_args out_var) set(${out_var} "${result}" PARENT_SCOPE) endfunction() +# Append ${ARGN} to ${target}'s ${property_name} property, removing duplicates. +function(_qt_internal_append_to_target_property_without_duplicates target property_name) + get_target_property(property "${target}" "${property_name}") + if(NOT property) + set(property "") + endif() + list(APPEND property ${ARGN}) + list(REMOVE_DUPLICATES property) + set_property(TARGET "${target}" PROPERTY "${property_name}" "${property}") +endfunction() + +# Append ${ARGN} to global CMake ${property_name} property, removing duplicates. +function(_qt_internal_append_to_cmake_property_without_duplicates property_name) + get_cmake_property(property "${property_name}") + if(NOT property) + set(property "") + endif() + list(APPEND property ${ARGN}) + list(REMOVE_DUPLICATES property) + set_property(GLOBAL PROPERTY "${property_name}" "${property}") +endfunction() +