From 7265ab1897ab5dc9b47d2c727cca4dc2c883a5a2 Mon Sep 17 00:00:00 2001 From: Alexey Edelev Date: Wed, 16 Aug 2023 17:01:23 +0200 Subject: [PATCH] Use the relative header path when checking if it's 3rdparty If source or build directry contain '3rdparty' in their path, all header files are marked as 3rdparty and will never be installed. This commit is CMake counterpart of ea4a3d78a776e10955caf6cf9b1054ddb50f40d3 Amends ea4a3d78a776e10955caf6cf9b1054ddb50f40d3 Fixes: QTBUG-116137 Change-Id: Ib93fb879867e3aeb6e44193c4253e73173c141d2 Reviewed-by: Alexandru Croitor (cherry picked from commit 7544d91ae1948c21225c345e2c941ab40b37b518) Reviewed-by: Qt Cherry-pick Bot --- cmake/QtModuleHelpers.cmake | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cmake/QtModuleHelpers.cmake b/cmake/QtModuleHelpers.cmake index 257d8512b83..21630860948 100644 --- a/cmake/QtModuleHelpers.cmake +++ b/cmake/QtModuleHelpers.cmake @@ -1239,10 +1239,13 @@ function(qt_internal_collect_module_headers out_var target) get_target_property(target_type ${target} TYPE) if(target_type STREQUAL "INTERFACE_LIBRARY") set(source_dir "${CMAKE_CURRENT_SOURCE_DIR}") + set(binary_dir "${CMAKE_CURRENT_BINARY_DIR}") else() get_target_property(source_dir ${target} SOURCE_DIR) + get_target_property(binary_dir ${target} BINARY_DIR) endif() get_filename_component(source_dir "${source_dir}" ABSOLUTE) + get_filename_component(binary_dir "${binary_dir}" ABSOLUTE) get_target_property(is_3rdparty_library ${target} _qt_module_is_3rdparty_header_library) @@ -1286,7 +1289,14 @@ function(qt_internal_collect_module_headers out_var target) "\nCondition:\n ${condition_string}") endif() - if(file_path MATCHES "3rdparty/.+" AND NOT is_3rdparty_library) + if(is_outside_module_source_dir) + set(base_dir "${binary_dir}") + else() + set(base_dir "${source_dir}") + endif() + + file(RELATIVE_PATH file_path_rel "${base_dir}" "${file_path}") + if(file_path_rel MATCHES "3rdparty/.+" AND NOT is_3rdparty_library) set(is_3rdparty_header TRUE) else() set(is_3rdparty_header FALSE)