[cmake-developers] [PATCH] Help: new example for CMP0054 to show when it makes a difference
Tamás Kenéz
tamas.kenez at gmail.com
Wed Apr 29 09:46:16 EDT 2015
The example for CMP0054 does not show how critical the policy is since
the result is the same in both cases (NEW and OLD policies).
I think it would be more educational to show an example when the
policy does make a difference.
Tamas
>From 03a6d915a5058d06a3f2cf8b4eac07cf42e81b53 Mon Sep 17 00:00:00 2001
From: Tamas Kenez <tamas.kenez at gmail.com>
Date: Wed, 29 Apr 2015 15:37:46 +0200
Subject: [PATCH] Help: new example for CMP0054 to show when it makes a
difference
---
Help/policy/CMP0054.rst | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/Help/policy/CMP0054.rst b/Help/policy/CMP0054.rst
index 39f0c40..6aaaf76 100644
--- a/Help/policy/CMP0054.rst
+++ b/Help/policy/CMP0054.rst
@@ -16,29 +16,33 @@ Given the following partial example:
::
- set(MONKEY 1)
- set(ANIMAL MONKEY)
-
- if("${ANIMAL}" STREQUAL "MONKEY")
+ set(A E)
+ set(E "")
+
+ if("${A}" STREQUAL "")
+ message("Result is TRUE before CMake 3.1 or when CMP0054 is OLD")
+ else()
+ message("Result is FALSE in CMake 3.1 and above if CMP0054 is NEW")
+ endif()
After explicit expansion of variables this gives:
::
- if("MONKEY" STREQUAL "MONKEY")
+ if("E" STREQUAL "")
With the policy set to ``OLD`` implicit expansion reduces this semantically to:
::
- if("1" STREQUAL "1")
+ if("" STREQUAL "")
With the policy set to ``NEW`` the quoted arguments will not be
further dereferenced:
::
- if("MONKEY" STREQUAL "MONKEY")
+ if("E" STREQUAL "")
This policy was introduced in CMake version 3.1.
CMake version |release| warns when the policy is not set and uses
--
1.9.4.msysgit.2
More information about the cmake-developers
mailing list