Do not report ALIASED_TARGET as always set (#15783)

The cmGetPropertyCommand::StoreResult expects NULL for unset
properties. Make ALIASED_TARGET align with that expectation.

Additional corrections to the unit tests are necessary because
get_property removes variables for unset properties (in contrast
to get_target_property which stores a -NOTFOUND value).
This commit is contained in:
Gregor Jasny 2016-06-25 22:51:51 +02:00
parent 5642349129
commit ea6475334a
2 changed files with 7 additions and 8 deletions

View File

@ -253,7 +253,7 @@ bool cmGetPropertyCommand::HandleTargetMode()
if (this->Makefile->IsAlias(this->Name)) {
return this->StoreResult(target->GetName().c_str());
} else {
return this->StoreResult((this->Variable + "-NOTFOUND").c_str());
return this->StoreResult(NULL);
}
}
return this->StoreResult(

View File

@ -66,6 +66,11 @@ endif()
add_library(iface INTERFACE)
add_library(Alias::Iface ALIAS iface)
get_property(_aliased_target_set TARGET foo PROPERTY ALIASED_TARGET SET)
if(_aliased_target_set)
message(SEND_ERROR "ALIASED_TARGET is set for target foo")
endif()
get_target_property(_notAlias1 foo ALIASED_TARGET)
if (NOT DEFINED _notAlias1)
message(SEND_ERROR "_notAlias1 is not defined")
@ -78,12 +83,6 @@ if (NOT _notAlias1 STREQUAL _notAlias1-NOTFOUND)
endif()
get_property(_notAlias2 TARGET foo PROPERTY ALIASED_TARGET)
if (NOT DEFINED _notAlias2)
message(SEND_ERROR "_notAlias2 is not defined")
endif()
if (_notAlias2)
message(SEND_ERROR "_notAlias2 is defined, but foo is not an ALIAS")
endif()
if (NOT _notAlias2 STREQUAL _notAlias2-NOTFOUND)
message(SEND_ERROR "_notAlias2 not defined to a -NOTFOUND variant")
message(SEND_ERROR "_notAlias2 evaluates to true, but foo is not an ALIAS")
endif()