mirror of
https://github.com/Kitware/CMake.git
synced 2026-02-22 06:59:01 -06:00
Merge topic 'foreach-loop-variable'
46896d98bb foreach(): loop variables are only available in the loop scope
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: Ben Boeckel <ben.boeckel@kitware.com>
Acked-by: Michael Hirsch <michael@scivision.dev>
Merge-request: !6044
This commit is contained in:
@@ -20,3 +20,5 @@ run_cmake(foreach-RANGE-non-int-test-3-2)
|
||||
run_cmake(foreach-RANGE-non-int-test-3-3)
|
||||
run_cmake(foreach-RANGE-invalid-test)
|
||||
run_cmake(foreach-RANGE-out-of-range-test)
|
||||
run_cmake(foreach-var-scope-CMP0124-OLD)
|
||||
run_cmake(foreach-var-scope-CMP0124-NEW)
|
||||
|
||||
51
Tests/RunCMake/foreach/foreach-var-scope-CMP0124-NEW.cmake
Normal file
51
Tests/RunCMake/foreach/foreach-var-scope-CMP0124-NEW.cmake
Normal file
@@ -0,0 +1,51 @@
|
||||
|
||||
cmake_policy(SET CMP0124 NEW)
|
||||
|
||||
foreach(VAR a b c)
|
||||
endforeach()
|
||||
if (DEFINED VAR)
|
||||
message(SEND_ERROR "Variable 'VAR' unexpectedly defined.")
|
||||
endif()
|
||||
|
||||
set(LIST1 a b c)
|
||||
set(LIST2 x y z)
|
||||
foreach(VAR1_1 VAR1_2 IN ZIP_LISTS LIST1 LIST2)
|
||||
endforeach()
|
||||
if (DEFINED VAR1_1 OR DEFINED VAR1_2)
|
||||
message(SEND_ERROR "Variables 'VAR1_1' or 'VAR1_2' unexpectedly defined.")
|
||||
endif()
|
||||
|
||||
|
||||
set (VAR2 OLD)
|
||||
foreach(VAR2 a b c)
|
||||
endforeach()
|
||||
if (NOT DEFINED VAR2 OR NOT VAR2 STREQUAL "OLD")
|
||||
message(SEND_ERROR "Variable 'VAR2' not defined or wrong value.")
|
||||
endif()
|
||||
|
||||
set (VAR2_2 OLD)
|
||||
foreach(VAR2_1 VAR2_2 IN ZIP_LISTS LIST1 LIST2)
|
||||
endforeach()
|
||||
if (DEFINED VAR2_1 OR NOT DEFINED VAR2_2)
|
||||
message(SEND_ERROR "Variable 'VAR2_1' unexpectedly defined or variable 'VAR2_2' not defined.")
|
||||
endif()
|
||||
|
||||
|
||||
set (VAR3 OLD CACHE STRING "")
|
||||
foreach(VAR3 a b c)
|
||||
endforeach()
|
||||
# check that only cache variable is defined
|
||||
set(OLD_VALUE "${VAR3}")
|
||||
unset(VAR3 CACHE)
|
||||
if (DEFINED VAR3 OR NOT OLD_VALUE STREQUAL "OLD")
|
||||
message(SEND_ERROR "Variable 'VAR3' wrongly defined or wrong value.")
|
||||
endif()
|
||||
|
||||
set (VAR3_2 OLD CACHE STRING "")
|
||||
foreach(VAR3_1 VAR3_2 IN ZIP_LISTS LIST1 LIST2)
|
||||
endforeach()
|
||||
set(OLD_VALUE "${VAR3_2}")
|
||||
unset(VAR3_2 CACHE)
|
||||
if (DEFINED VAR3_1 OR DEFINED VAR3_2 OR NOT OLD_VALUE STREQUAL "OLD")
|
||||
message(SEND_ERROR "Variable 'VAR3_1' unexpectedly defined or variable 'VAR2_2' wrongly defined or wrong value.")
|
||||
endif()
|
||||
53
Tests/RunCMake/foreach/foreach-var-scope-CMP0124-OLD.cmake
Normal file
53
Tests/RunCMake/foreach/foreach-var-scope-CMP0124-OLD.cmake
Normal file
@@ -0,0 +1,53 @@
|
||||
|
||||
cmake_policy(SET CMP0124 OLD)
|
||||
|
||||
foreach(VAR a b c)
|
||||
endforeach()
|
||||
if (NOT DEFINED VAR OR NOT VAR STREQUAL "")
|
||||
message(SEND_ERROR "Variable 'VAR' not defined or wrong value.")
|
||||
endif()
|
||||
|
||||
set(LIST1 a b c)
|
||||
set(LIST2 x y z)
|
||||
foreach(VAR1_1 VAR1_2 IN ZIP_LISTS LIST1 LIST2)
|
||||
endforeach()
|
||||
if (NOT DEFINED VAR1_1 OR NOT VAR1_1 STREQUAL ""
|
||||
OR NOT DEFINED VAR1_2 OR NOT VAR1_2 STREQUAL "")
|
||||
message(SEND_ERROR "Variables 'VAR1_1' or 'VAR1_2' not defined or wrong value.")
|
||||
endif()
|
||||
|
||||
|
||||
set (VAR2 OLD)
|
||||
foreach(VAR2 a b c)
|
||||
endforeach()
|
||||
if (NOT DEFINED VAR2 OR NOT VAR2 STREQUAL "OLD")
|
||||
message(SEND_ERROR "Variable 'VAR2' not defined or wrong value.")
|
||||
endif()
|
||||
|
||||
set (VAR2_2 OLD)
|
||||
foreach(VAR2_1 VAR2_2 IN ZIP_LISTS LIST1 LIST2)
|
||||
endforeach()
|
||||
if (NOT DEFINED VAR2_1 OR NOT VAR2_1 STREQUAL ""
|
||||
OR NOT DEFINED VAR2_2 OR NOT VAR2_2 STREQUAL "OLD")
|
||||
message(SEND_ERROR "Variables 'VAR2_1' or 'VAR2_2' not defined or wrong value.")
|
||||
endif()
|
||||
|
||||
|
||||
set (VAR3 OLD CACHE STRING "")
|
||||
foreach(VAR3 a b c)
|
||||
endforeach()
|
||||
# a normal variable is defined, holding cache variable value
|
||||
unset(VAR3 CACHE)
|
||||
if (NOT DEFINED VAR3 OR NOT VAR3 STREQUAL "OLD")
|
||||
message(SEND_ERROR "Variable 'VAR3' not defined or wrong value.")
|
||||
endif()
|
||||
|
||||
set (VAR3_2 OLD CACHE STRING "")
|
||||
foreach(VAR3_1 VAR3_2 IN ZIP_LISTS LIST1 LIST2)
|
||||
endforeach()
|
||||
# a normal variable is defined, holding cache variable value
|
||||
unset(VAR3_2 CACHE)
|
||||
if (NOT DEFINED VAR3_1 OR NOT VAR3_1 STREQUAL ""
|
||||
OR NOT DEFINED VAR3_2 OR NOT VAR3_2 STREQUAL "OLD")
|
||||
message(SEND_ERROR "Variables 'VAR3_1' or 'VAR3_2' not defined or wrong value.")
|
||||
endif()
|
||||
Reference in New Issue
Block a user