diff options
author | Brad King <brad.king@kitware.com> | 2014-07-31 13:48:41 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2014-07-31 13:48:41 (GMT) |
commit | 4f2fcce4b9f897dfa98cb82f3876cd43ab80f69b (patch) | |
tree | b54f99738b9ae58df6f6c64d04938a768a1f15a9 /Modules/CheckCXXSourceCompiles.cmake | |
parent | b48211d4261840136e750d3d82f195ad48b17a8f (diff) | |
download | CMake-4f2fcce4b9f897dfa98cb82f3876cd43ab80f69b.zip CMake-4f2fcce4b9f897dfa98cb82f3876cd43ab80f69b.tar.gz CMake-4f2fcce4b9f897dfa98cb82f3876cd43ab80f69b.tar.bz2 |
Check*: Allow result variables to contain regex special characters (#14923)
Prior to the existence of the if(DEFINED) condition, many of our Check
modules implemented the condition with a hack that takes advantage of
the auto-dereference behavior of the if() command to detect if a
variable is defined. The hack has the form:
if("${VAR} MATCHES "^${VAR}$")
where "${VAR}" is a macro argument reference. However, this does not
work when the variable named in the macro argument contains characters
that have special meaning in regular expressions, such as '+'. Run the
command
git grep -E 'if\("\$\{.*\}" MATCHES "\^\$\{.*\}\$"\)' -- Modules/Check*
to identify lines with this problem. Use if(NOT DEFINED) instead.
Diffstat (limited to 'Modules/CheckCXXSourceCompiles.cmake')
-rw-r--r-- | Modules/CheckCXXSourceCompiles.cmake | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/Modules/CheckCXXSourceCompiles.cmake b/Modules/CheckCXXSourceCompiles.cmake index 6ce64a1..edd62a6 100644 --- a/Modules/CheckCXXSourceCompiles.cmake +++ b/Modules/CheckCXXSourceCompiles.cmake @@ -39,7 +39,7 @@ macro(CHECK_CXX_SOURCE_COMPILES SOURCE VAR) - if("${VAR}" MATCHES "^${VAR}$") + if(NOT DEFINED "${VAR}") set(_FAIL_REGEX) set(_key) foreach(arg ${ARGN}) |