diff options
-rw-r--r-- | Eigen/CMakeLists.txt | 8 | ||||
-rw-r--r-- | Eigen/src/CMakeLists.txt | 3 | ||||
-rw-r--r-- | cmake/RegexUtils.cmake | 19 |
3 files changed, 28 insertions, 2 deletions
diff --git a/Eigen/CMakeLists.txt b/Eigen/CMakeLists.txt index 2d96726d4..a92dd6f6c 100644 --- a/Eigen/CMakeLists.txt +++ b/Eigen/CMakeLists.txt @@ -1,6 +1,12 @@ +include(RegexUtils) +test_escape_string_as_regex() + file(GLOB Eigen_directory_files "*") + +escape_string_as_regex(ESCAPED_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") + foreach(f ${Eigen_directory_files}) - if(NOT f MATCHES ".txt" AND NOT f MATCHES "${CMAKE_CURRENT_SOURCE_DIR}/src") + if(NOT f MATCHES "\\.txt" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/[.].+" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/src") list(APPEND Eigen_directory_files_to_install ${f}) endif() endforeach(f ${Eigen_directory_files}) diff --git a/Eigen/src/CMakeLists.txt b/Eigen/src/CMakeLists.txt index 52696a803..c326f374d 100644 --- a/Eigen/src/CMakeLists.txt +++ b/Eigen/src/CMakeLists.txt @@ -1,6 +1,7 @@ file(GLOB Eigen_src_subdirectories "*") +escape_string_as_regex(ESCAPED_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") foreach(f ${Eigen_src_subdirectories}) - if(NOT f MATCHES ".txt") + if(NOT f MATCHES "\\.txt" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/[.].+" ) add_subdirectory(${f}) endif() endforeach() diff --git a/cmake/RegexUtils.cmake b/cmake/RegexUtils.cmake new file mode 100644 index 000000000..b59dfc340 --- /dev/null +++ b/cmake/RegexUtils.cmake @@ -0,0 +1,19 @@ +function(escape_string_as_regex _str_out _str_in) + STRING(REGEX REPLACE "\\\\" "\\\\\\\\" FILETEST2 "${_str_in}") + STRING(REGEX REPLACE "([.$+*?|-])" "\\\\\\1" FILETEST2 "${FILETEST2}") + STRING(REGEX REPLACE "\\^" "\\\\^" FILETEST2 "${FILETEST2}") + STRING(REGEX REPLACE "\\(" "\\\\(" FILETEST2 "${FILETEST2}") + STRING(REGEX REPLACE "\\)" "\\\\)" FILETEST2 "${FILETEST2}") + STRING(REGEX REPLACE "\\[" "\\\\[" FILETEST2 "${FILETEST2}") + STRING(REGEX REPLACE "\\]" "\\\\]" FILETEST2 "${FILETEST2}") + SET(${_str_out} "${FILETEST2}" PARENT_SCOPE) +endfunction() + +function(test_escape_string_as_regex) + SET(test1 "\\.^$-+*()[]?|") + escape_string_as_regex(test2 "${test1}") + SET(testRef "\\\\\\.\\^\\$\\-\\+\\*\\(\\)\\[\\]\\?\\|") + if(NOT test2 STREQUAL testRef) + message("Error in the escape_string_for_regex function : \n ${test1} was escaped as ${test2}, should be ${testRef}") + endif(NOT test2 STREQUAL testRef) +endfunction()
\ No newline at end of file |