| cmake_minimum_required (VERSION 3.0) |
| project (RegexClear C) |
| |
| function (output_results msg) |
| message("results from: ${msg}") |
| message("CMAKE_MATCH_0: -->${CMAKE_MATCH_0}<--") |
| message("CMAKE_MATCH_1: -->${CMAKE_MATCH_1}<--") |
| message("CMAKE_MATCH_2: -->${CMAKE_MATCH_2}<--") |
| message("CMAKE_MATCH_COUNT: -->${CMAKE_MATCH_COUNT}<--") |
| endfunction () |
| |
| function (check_for_success msg) |
| if (CMAKE_MATCH_1 STREQUAL "0" AND |
| CMAKE_MATCH_2 STREQUAL "1") |
| message("Matched string properly") |
| else () |
| message("Failed to match properly") |
| endif () |
| output_results("${msg}") |
| endfunction () |
| |
| function (check_for_failure msg) |
| if (CMAKE_MATCH_1 STREQUAL "" AND |
| CMAKE_MATCH_2 STREQUAL "") |
| message("Matched nothing properly") |
| else () |
| message("Found a match where there should be none") |
| endif () |
| output_results("${msg}") |
| endfunction () |
| |
| macro (do_regex_success msg) |
| string(REGEX MATCH "(0)(1)" output "01") |
| check_for_success("${msg}") |
| endmacro () |
| |
| macro (do_regex_failure msg) |
| string(REGEX MATCH "(0)(1)" output "12") |
| check_for_failure("${msg}") |
| endmacro () |
| |
| do_regex_success("setting up initial state") |
| |
| list(INSERT CMAKE_MODULE_PATH 0 |
| "${CMAKE_CURRENT_SOURCE_DIR}/cmake") |
| find_package(dummy) # Ensure cmMakefile::PushScope/PopScope work. |
| |
| check_for_failure("checking after find_package") |
| do_regex_failure("clearing out results with a failing match") |
| do_regex_success("making a successful match before add_subdirectory") |
| |
| add_subdirectory(subdir) |
| |
| check_for_success("ensuring the subdirectory did not interfere with the parent") # Ensure that the subdir didn't mess with this scope. |