From 67cb5b9bcfadfb3024c34c0c4825e3e83871bb5f Mon Sep 17 00:00:00 2001 From: Alexey Edelev Date: Mon, 9 Sep 2024 11:58:27 +0200 Subject: [PATCH] Fix the unescaped path MATCH condition in QtHeadersClean Use plain string find instead since paths containing special regex symbols, give either the invalid MATCH results or lead to regex compilation error. Pick-to: 6.5 Fixes: QTBUG-116042 Change-Id: I9deb2fe760843c9be1e622cf2216c6dc81d73e71 Reviewed-by: Joerg Bornemann (cherry picked from commit 41b72465d83af147cef4d560756ced2b457955ec) Reviewed-by: Alexandru Croitor --- cmake/QtHeadersClean.cmake | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/cmake/QtHeadersClean.cmake b/cmake/QtHeadersClean.cmake index a1ebfcef28a..adcf868f5ad 100644 --- a/cmake/QtHeadersClean.cmake +++ b/cmake/QtHeadersClean.cmake @@ -237,12 +237,14 @@ function(qt_internal_add_headersclean_target module_target module_headers) get_filename_component(input_file_name ${input_path} NAME) set(artifact_path "${CMAKE_CURRENT_BINARY_DIR}/header_check/${input_file_name}.o") - unset(input_base_dir) - if(input_path MATCHES "${CMAKE_BINARY_DIR}") - set(input_base_dir "${CMAKE_BINARY_DIR}") - elseif(input_path MATCHES "${CMAKE_SOURCE_DIR}") - set(input_base_dir "${CMAKE_SOURCE_DIR}") - endif() + set(possible_base_dirs "${CMAKE_BINARY_DIR}" "${CMAKE_SOURCE_DIR}") + foreach(dir IN LISTS possible_base_dirs) + string(FIND "${input_path}" "${dir}" idx) + if(idx EQUAL "0") + set(input_base_dir "${dir}") + break() + endif() + endforeach() if(input_base_dir AND IS_ABSOLUTE "${input_base_dir}" AND IS_ABSOLUTE "${input_path}") file(RELATIVE_PATH comment_header_path "${input_base_dir}" "${input_path}")