| cmake_policy(SET CMP0140 NEW) |
| |
| include ("${RunCMake_SOURCE_DIR}/check_errors.cmake") |
| unset (errors) |
| |
| ############################################### |
| ## First test with a path defining all elements |
| ############################################### |
| if (WIN32) |
| set (path "C:/aa/bb/cc.ext1.ext2") |
| else() |
| set (path "/aa/bb/cc.ext1.ext2") |
| endif() |
| |
| cmake_path(GET path ROOT_NAME reference) |
| if (WIN32) |
| set(output "$<PATH:GET_ROOT_NAME,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_ROOT_NAME,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_NAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path ROOT_DIRECTORY reference) |
| if (WIN32) |
| set(output "$<PATH:GET_ROOT_DIRECTORY,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_ROOT_DIRECTORY,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_DIRECTORY returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path ROOT_PATH reference) |
| if (WIN32) |
| set(output "$<PATH:GET_ROOT_PATH,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_ROOT_PATH,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_PATH returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path FILENAME reference) |
| if (WIN32) |
| set(output "$<PATH:GET_FILENAME,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_FILENAME,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "FILENAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path EXTENSION reference) |
| if (WIN32) |
| set(output "$<PATH:GET_EXTENSION,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_EXTENSION,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION returns bad data: ${output}") |
| endif() |
| cmake_path(GET path EXTENSION LAST_ONLY reference) |
| if (WIN32) |
| set(output "$<PATH:GET_EXTENSION,LAST_ONLY,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_EXTENSION,LAST_ONLY,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION LAST_ONLY returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path STEM reference) |
| if (WIN32) |
| set(output "$<PATH:GET_STEM,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_STEM,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "STEM returns bad data: ${output}") |
| endif() |
| cmake_path(GET path STEM LAST_ONLY reference) |
| if (WIN32) |
| set(output "$<PATH:GET_STEM,LAST_ONLY,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_STEM,LAST_ONLY,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "STEM LAST_ONLY returns bad data: ${reference}") |
| endif() |
| |
| cmake_path(GET path RELATIVE_PART reference) |
| if (WIN32) |
| set(output "$<PATH:GET_RELATIVE_PART,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_RELATIVE_PART,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "RELATIVE_PART returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path PARENT_PATH reference) |
| if (WIN32) |
| set(output "$<PATH:GET_PARENT_PATH,C:/aa/bb/cc.ext1.ext2>") |
| else() |
| set (output "$<PATH:GET_PARENT_PATH,/aa/bb/cc.ext1.ext2>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "PARENT_PATH returns bad data: ${output}") |
| endif() |
| |
| ###################################### |
| ## second, tests with missing elements |
| ###################################### |
| set (path "aa/bb/") |
| |
| cmake_path(GET path ROOT_NAME reference) |
| set(output "$<PATH:GET_ROOT_NAME,aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_NAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path ROOT_DIRECTORY reference) |
| set(output "$<PATH:GET_ROOT_DIRECTORY,aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_DIRECTORY returns bad data: >${output}<, >${reference}<") |
| endif() |
| |
| cmake_path(GET path ROOT_PATH reference) |
| set(output "$<PATH:GET_ROOT_PATH,aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_PATH returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path FILENAME reference) |
| set(output "$<PATH:GET_FILENAME,aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "FILENAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path EXTENSION reference) |
| set(output "$<PATH:GET_EXTENSION,aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path STEM reference) |
| set(output "$<PATH:GET_STEM,aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "STEM returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path RELATIVE_PART reference) |
| set(output "$<PATH:GET_RELATIVE_PART,aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "RELATIVE_PART returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path PARENT_PATH reference) |
| set(output "$<PATH:GET_PARENT_PATH,aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "PARENT_PATH returns bad data: ${output}") |
| endif() |
| |
| ################################## |
| set (path "/aa/bb/") |
| |
| cmake_path(GET path ROOT_NAME reference) |
| set(output "$<PATH:GET_ROOT_NAME,/aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_NAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path ROOT_DIRECTORY reference) |
| set(output "$<PATH:GET_ROOT_DIRECTORY,/aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_DIRECTORY returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path ROOT_PATH reference) |
| set(output "$<PATH:GET_ROOT_PATH,/aa/bb/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_PATH returns bad data: ${output}") |
| endif() |
| |
| ################################### |
| set (path "/") |
| |
| cmake_path(GET path ROOT_NAME reference) |
| set(output "$<PATH:GET_ROOT_NAME,/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_NAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path ROOT_DIRECTORY reference) |
| set(output "$<PATH:GET_ROOT_DIRECTORY,/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_DIRECTORY returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path ROOT_PATH reference) |
| set(output "$<PATH:GET_ROOT_PATH,/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_PATH returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path FILENAME reference) |
| set(output "$<PATH:GET_FILENAME,/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "FILENAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path EXTENSION reference) |
| set(output "$<PATH:GET_EXTENSION,/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path STEM reference) |
| set(output "$<PATH:GET_STEM,/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "STEM returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path RELATIVE_PART reference) |
| set(output "$<PATH:GET_RELATIVE_PART,/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "RELATIVE_PART returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path PARENT_PATH reference) |
| set(output "$<PATH:GET_PARENT_PATH,/>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "PARENT_PATH returns bad data: ${output}") |
| endif() |
| |
| ################################### |
| set (path ".file") |
| |
| cmake_path(GET path FILENAME reference) |
| set(output "$<PATH:GET_FILENAME,.file>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "FILENAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path EXTENSION reference) |
| set(output "$<PATH:GET_EXTENSION,.file>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path STEM reference) |
| set(output "$<PATH:GET_STEM,.file>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "STEM returns bad data: ${output}") |
| endif() |
| |
| ################################### |
| set (path ".file.ext") |
| |
| cmake_path(GET path FILENAME reference) |
| set(output "$<PATH:GET_FILENAME,.file.ext>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "FILENAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path EXTENSION reference) |
| set(output "$<PATH:GET_EXTENSION,.file.ext>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION returns bad data: ${output}") |
| endif() |
| cmake_path(GET path EXTENSION LAST_ONLY reference) |
| set(output "$<PATH:GET_EXTENSION,LAST_ONLY,.file.ext>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path STEM reference) |
| set(output "$<PATH:GET_STEM,.file.ext>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "STEM returns bad data: ${output}") |
| endif() |
| |
| ################################### |
| set (path ".file.ext1.ext2") |
| |
| cmake_path(GET path FILENAME reference) |
| set(output "$<PATH:GET_FILENAME,.file.ext1.ext2>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "FILENAME returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path EXTENSION reference) |
| set(output "$<PATH:GET_EXTENSION,.file.ext1.ext2>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION returns bad data: ${output}") |
| endif() |
| cmake_path(GET path EXTENSION LAST_ONLY reference) |
| set(output "$<PATH:GET_EXTENSION,LAST_ONLY,.file.ext1.ext2>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION returns bad data: ${output}") |
| endif() |
| |
| cmake_path(GET path STEM reference) |
| set(output "$<PATH:GET_STEM,.file.ext1.ext2>") |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "STEM returns bad data: ${output}") |
| endif() |
| |
| |
| ###################################### |
| ## third, tests with list of paths |
| ###################################### |
| if (WIN32) |
| set (paths "C:/aa/bb/cc.ext1.ext2" "D:/xx/yy/zz.ext3.ext4") |
| else() |
| set (paths "/aa/bb/cc.ext1.ext2" "/xx/yy/zz.ext3.ext4") |
| endif() |
| |
| function (compute_reference action) |
| unset(reference) |
| foreach (path IN LISTS paths) |
| cmake_path(GET path ${ARGV} result) |
| list(APPEND reference "${result}") |
| endforeach() |
| if (reference STREQUAL "") |
| # define the list as 2 empty elements |
| set(reference ";") |
| endif() |
| |
| return(PROPAGATE reference) |
| endfunction() |
| |
| compute_reference(ROOT_NAME) |
| if (WIN32) |
| set(output "$<PATH:GET_ROOT_NAME,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_ROOT_NAME,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_NAME returns bad data: ${output}") |
| endif() |
| |
| compute_reference(ROOT_DIRECTORY) |
| if (WIN32) |
| set(output "$<PATH:GET_ROOT_DIRECTORY,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_ROOT_DIRECTORY,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_DIRECTORY returns bad data: ${output}") |
| endif() |
| |
| compute_reference(ROOT_PATH) |
| if (WIN32) |
| set(output "$<PATH:GET_ROOT_PATH,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_ROOT_PATH,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "ROOT_PATH returns bad data: ${output}") |
| endif() |
| |
| compute_reference(FILENAME) |
| if (WIN32) |
| set(output "$<PATH:GET_FILENAME,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_FILENAME,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "FILENAME returns bad data: ${output}") |
| endif() |
| |
| compute_reference(EXTENSION) |
| if (WIN32) |
| set(output "$<PATH:GET_EXTENSION,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_EXTENSION,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION returns bad data: ${output}") |
| endif() |
| compute_reference(EXTENSION LAST_ONLY) |
| if (WIN32) |
| set(output "$<PATH:GET_EXTENSION,LAST_ONLY,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_EXTENSION,LAST_ONLY,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "EXTENSION LAST_ONLY returns bad data: ${output}") |
| endif() |
| |
| compute_reference(STEM) |
| if (WIN32) |
| set(output "$<PATH:GET_STEM,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_STEM,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "STEM returns bad data: ${output}") |
| endif() |
| compute_reference(STEM LAST_ONLY) |
| if (WIN32) |
| set(output "$<PATH:GET_STEM,LAST_ONLY,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_STEM,LAST_ONLY,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "STEM LAST_ONLY returns bad data: ${reference}") |
| endif() |
| |
| compute_reference(RELATIVE_PART) |
| if (WIN32) |
| set(output "$<PATH:GET_RELATIVE_PART,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_RELATIVE_PART,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "RELATIVE_PART returns bad data: ${output}") |
| endif() |
| |
| compute_reference(PARENT_PATH) |
| if (WIN32) |
| set(output "$<PATH:GET_PARENT_PATH,C:/aa/bb/cc.ext1.ext2;D:/xx/yy/zz.ext3.ext4>") |
| else() |
| set (output "$<PATH:GET_PARENT_PATH,/aa/bb/cc.ext1.ext2;/xx/yy/zz.ext3.ext4>") |
| endif() |
| if (NOT output STREQUAL reference) |
| list (APPEND errors "PARENT_PATH returns bad data: ${output}") |
| endif() |
| |
| |
| check_errors("PATH:GET..." ${errors}) |