CMP0053: Fix double warning on uninitialized variables in -P mode

When `CMP0053` is not set to OLD or NEW then we compute both variants
in case we need to warn about a behavior change.  Do not allow both
code paths to produce an uninitialized variable warning.

Fixes: #18552
This commit is contained in:
R2RT
2018-11-04 23:05:35 +01:00
committed by Brad King
parent f92f93467e
commit 53a5aec899
4 changed files with 11 additions and 1 deletions

View File

@@ -2766,7 +2766,7 @@ cmake::MessageType cmMakefile::ExpandVariablesInStringNew(
} else {
varresult = value;
}
} else if (!removeEmpty) {
} else if (!removeEmpty && !this->SuppressSideEffects) {
// check to see if we need to print a warning
// if strict mode is on and the variable has
// not been "cleared"/initialized with a set(foo ) call

View File

@@ -348,6 +348,10 @@ set(RunCMake_TEST_OPTIONS --trace-expand --warn-uninitialized)
run_cmake(trace-expand-warn-uninitialized)
unset(RunCMake_TEST_OPTIONS)
set(RunCMake_TEST_OPTIONS --warn-uninitialized)
run_cmake(warn-uninitialized)
unset(RunCMake_TEST_OPTIONS)
set(RunCMake_TEST_OPTIONS --trace-source=trace-only-this-file.cmake)
run_cmake(trace-source)
unset(RunCMake_TEST_OPTIONS)

View File

@@ -0,0 +1,5 @@
^CMake Warning \(dev\) at warn-uninitialized.cmake:1 \(set\):
uninitialized variable 'WARN_FROM_NORMAL_CMAKE_FILE'
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
This warning is for project developers. Use -Wno-dev to suppress it.$

View File

@@ -0,0 +1 @@
set(FOO "${WARN_FROM_NORMAL_CMAKE_FILE}")