Improves the filter for hidden files in "Eigen" and "Eigen/src".

This generic solution prevent cmake from having an error .svn folders when the source folder is under subversion.
This commit is contained in:
Frederic Gosselin 2010-11-22 10:47:07 -05:00
parent 5a65d7970a
commit 4c5932f8f5
3 changed files with 28 additions and 2 deletions

View File

@ -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})

View File

@ -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()

19
cmake/RegexUtils.cmake Normal file
View File

@ -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()