diff options
author | Brad King <brad.king@kitware.com> | 2013-01-29 15:26:11 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-01-30 15:05:07 (GMT) |
commit | 175ed02207ea5fe25aa7156acb2554d706611263 (patch) | |
tree | 5a6bc4c8108fb519f4a7e626b9153f17c2b5a2f6 | |
parent | 4befecc77caa97aeb450d9a2b6bcbe0985dc4054 (diff) | |
download | CMake-175ed02207ea5fe25aa7156acb2554d706611263.zip CMake-175ed02207ea5fe25aa7156acb2554d706611263.tar.gz CMake-175ed02207ea5fe25aa7156acb2554d706611263.tar.bz2 |
ExternalData: Allow ()-groups in series match regex
Refactor use of the ExternalData_SERIES_MATCH value to avoid assuming
that it has no ()-groups that interfere with group indexing.
Extend the Module.ExternalData test to cover this case.
-rw-r--r-- | Modules/ExternalData.cmake | 13 | ||||
-rw-r--r-- | Tests/Module/ExternalData/Data2/CMakeLists.txt | 2 |
2 files changed, 9 insertions, 6 deletions
diff --git a/Modules/ExternalData.cmake b/Modules/ExternalData.cmake index 0ef514c..6442c3e 100644 --- a/Modules/ExternalData.cmake +++ b/Modules/ExternalData.cmake @@ -502,11 +502,14 @@ endmacro() function(_ExternalData_arg_find_files pattern regex) file(GLOB globbed RELATIVE "${top_src}" "${top_src}/${pattern}*") foreach(entry IN LISTS globbed) - string(REGEX REPLACE "^(${regex})(\\.md5|)$" "\\1;\\2" tuple "${entry}") - list(LENGTH tuple len) - if("${len}" EQUAL 2 AND NOT IS_DIRECTORY "${top_src}/${entry}") - list(GET tuple 0 relname) - list(GET tuple 1 alg) + if("x${entry}" MATCHES "^x(.*)(\\.md5)$") + set(relname "${CMAKE_MATCH_1}") + set(alg "${CMAKE_MATCH_2}") + else() + set(relname "${entry}") + set(alg "") + endif() + if("x${relname}" MATCHES "^x${regex}$" AND NOT IS_DIRECTORY "${top_src}/${entry}") set(name "${top_src}/${relname}") set(file "${top_bin}/${relname}") if(alg) diff --git a/Tests/Module/ExternalData/Data2/CMakeLists.txt b/Tests/Module/ExternalData/Data2/CMakeLists.txt index f8eedff..e6d8767 100644 --- a/Tests/Module/ExternalData/Data2/CMakeLists.txt +++ b/Tests/Module/ExternalData/Data2/CMakeLists.txt @@ -1,5 +1,5 @@ set(ExternalData_SERIES_PARSE "([0-9]+)(_\\.my\\.dat)$") -set(ExternalData_SERIES_MATCH "[0-9]+") +set(ExternalData_SERIES_MATCH "([0-9]+)") ExternalData_Add_Test(Data2 NAME Data2Check COMMAND ${CMAKE_COMMAND} |