Commit 633584b52faa6ff06fdd21050a554241a40ded3f

Patrick Steinhardt 2018-10-04T10:48:12

cmake: enable new quoted argument policy CMP0054 Quoting from CMP0054's documentation: Only interpret if() arguments as variables or keywords when unquoted. CMake 3.1 and above no longer implicitly dereference variables or interpret keywords in an if() command argument when it is a Quoted Argument or a Bracket Argument. The OLD behavior for this policy is to dereference variables and interpret keywords even if they are quoted or bracketed. The NEW behavior is to not dereference variables or interpret keywords that have been quoted or bracketed. The previous behaviour could be quite unexpected. Quoted arguments might be expanded in case where the value of the argument corresponds to a variable. E.g. `IF("MONKEY" STREQUAL "MONKEY")` would have been expanded to `IF("1" STREQUAL "1")` iff `SET(MONKEY 1)` was set. This behaviour was weird, and recent CMake versions have started to complain about this if they see ambiguous situations. Thus we want to disable it in favor of the new behaviour.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 37970c7..47b1cd1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,6 +20,9 @@ ENDIF()
 IF(POLICY CMP0042)
 	CMAKE_POLICY(SET CMP0042 NEW)
 ENDIF()
+IF(POLICY CMP0054)
+	CMAKE_POLICY(SET CMP0054 NEW)
+ENDIF()
 
 # Add find modules to the path
 SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${libgit2_SOURCE_DIR}/cmake/Modules/")