From 79cc472a64e179b9d953189e700bca746254da54 Mon Sep 17 00:00:00 2001 From: msclock Date: Tue, 20 Feb 2024 09:46:36 +0800 Subject: [PATCH] fix: cmake install prefix path substitution when creating uninstall target, the CMAKE_INSTALL_PREFIX may contains white spaces causing substitution errors. --- cmake/install/Common.cmake | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/cmake/install/Common.cmake b/cmake/install/Common.cmake index 8781d49..f1e9be4 100644 --- a/cmake/install/Common.cmake +++ b/cmake/install/Common.cmake @@ -299,15 +299,16 @@ foreach(file \${files}) endforeach() function(get_empty_dir check_dir result_dirs) - file(GLOB_RECURSE DIR_CONTENTS LIST_DIRECTORIES true RELATIVE \${check_dir} \${check_dir}/*) - list(REVERSE DIR_CONTENTS) + file(GLOB_RECURSE check_dirs LIST_DIRECTORIES true \"\${check_dir}/*\") + list(REVERSE check_dirs) + list(APPEND check_dirs \${check_dir}) - foreach(ITEM \${DIR_CONTENTS}) - if(IS_DIRECTORY \${check_dir}/\${ITEM}) - file(GLOB_RECURSE SUBDIR_CONTENTS \${check_dir}/\${ITEM}/*) + foreach(item \${check_dirs}) + if(IS_DIRECTORY \${item}) + file(GLOB_RECURSE dir_item_subdirs \"\${item}/*\") - if(NOT SUBDIR_CONTENTS) - list(APPEND _empty \${check_dir}/\${ITEM}) + if(NOT dir_item_subdirs) + list(APPEND _empty \${item}) endif() endif() endforeach() @@ -315,7 +316,7 @@ function(get_empty_dir check_dir result_dirs) set(\${result_dirs} \${_empty} PARENT_SCOPE) endfunction() -get_empty_dir(@CMAKE_INSTALL_PREFIX@ result_dirs) +get_empty_dir(\"@CMAKE_INSTALL_PREFIX@\" result_dirs) foreach(empty_dir \${result_dirs}) file(REMOVE_RECURSE \${empty_dir})