mirror of
https://github.com/reactos/CMake.git
synced 2025-01-22 11:24:56 +00:00
If: Support the 'DEFINED CACHE{}' syntax
This commit is contained in:
parent
9463d73cc4
commit
1222f02e34
@ -187,11 +187,10 @@ Possible conditions are:
|
||||
``if(<variable|string> IN_LIST <variable>)``
|
||||
True if the given element is contained in the named list variable.
|
||||
|
||||
``if(DEFINED <name>|ENV{<name>})``
|
||||
True if a variable or environment variable
|
||||
with given ``<name>`` is defined.
|
||||
The value of the variable does not matter.
|
||||
Note that macro arguments are not variables.
|
||||
``if(DEFINED <name>|CACHE{<name>}|ENV{<name>})``
|
||||
True if a variable, cache variable or environment variable
|
||||
with given ``<name>`` is defined. The value of the variable
|
||||
does not matter. Note that macro arguments are not variables.
|
||||
|
||||
``if((condition) AND (condition OR (condition)))``
|
||||
The conditions inside the parenthesis are evaluated first and then
|
||||
|
5
Help/release/dev/if-supports-cache-defined.rst
Normal file
5
Help/release/dev/if-supports-cache-defined.rst
Normal file
@ -0,0 +1,5 @@
|
||||
if-supports-cache-defined
|
||||
-------------------------
|
||||
|
||||
* The :command:`if` command gained support for checking if cache variables
|
||||
are defined with the ``DEFINED CACHE{VAR}`` syntax.
|
@ -495,6 +495,12 @@ bool cmConditionEvaluator::HandleLevel1(cmArgumentList& newArgs, std::string&,
|
||||
argP1->GetValue().operator[](argP1len - 1) == '}') {
|
||||
std::string env = argP1->GetValue().substr(4, argP1len - 5);
|
||||
bdef = cmSystemTools::HasEnv(env);
|
||||
} else if (argP1len > 6 &&
|
||||
argP1->GetValue().substr(0, 6) == "CACHE{" &&
|
||||
argP1->GetValue().operator[](argP1len - 1) == '}') {
|
||||
std::string cache = argP1->GetValue().substr(6, argP1len - 7);
|
||||
bdef =
|
||||
this->Makefile.GetState()->GetCacheEntryValue(cache) != nullptr;
|
||||
} else {
|
||||
bdef = this->Makefile.IsDefinitionSet(argP1->GetValue());
|
||||
}
|
||||
|
@ -21,17 +21,26 @@ set(x 43)
|
||||
if(NOT x EQUAL 43)
|
||||
message(FATAL_ERROR "x!=43")
|
||||
endif()
|
||||
if(DEFINED CACHE{x})
|
||||
message(FATAL_ERROR "x shouldn't be found in the cache")
|
||||
endif()
|
||||
|
||||
set(x)
|
||||
if(DEFINED x)
|
||||
message(FATAL_ERROR "x should be undefined now!")
|
||||
endif()
|
||||
|
||||
|
||||
# Cache variable
|
||||
set(BAR "test" CACHE STRING "documentation")
|
||||
if(NOT DEFINED BAR)
|
||||
message(FATAL_ERROR "BAR not defined")
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CACHE{BAR})
|
||||
message(FATAL_ERROR "BAR could not be found by CACHE{BAR}")
|
||||
endif()
|
||||
|
||||
# Test interaction of cache entries with variables.
|
||||
set(BAR "test-var")
|
||||
if(NOT "$CACHE{BAR}" STREQUAL "test")
|
||||
|
Loading…
x
Reference in New Issue
Block a user