| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file LICENSE.rst or https://cmake.org/licensing for details. */ | |
| #include "cmTargetPropertyHelper.h" | |
| #include "cmGlobalGenerator.h" | |
| #include "cmMakefile.h" | |
| #include "cmTarget.h" | |
| #include "cmValue.h" | |
| cmGetTargetPropertyResult cmGetTargetProperty(std::string const& targetName, | |
| std::string const& propertyName, | |
| cmMakefile& mf, | |
| cmValue& propertyValue) | |
| { | |
| cmTarget* target = mf.FindTargetToUse(targetName); | |
| if (!target) { | |
| return cmGetTargetPropertyResult::TargetNotFound; | |
| } | |
| return cmGetTargetProperty(targetName, target, propertyName, mf, | |
| propertyValue); | |
| } | |
| cmGetTargetPropertyResult cmGetTargetProperty(std::string const& targetName, | |
| cmTarget const* target, | |
| std::string const& propertyName, | |
| cmMakefile& mf, | |
| cmValue& propertyValue) | |
| { | |
| if (propertyName == "ALIASED_TARGET" || propertyName == "ALIAS_GLOBAL") { | |
| if (mf.IsAlias(targetName)) { | |
| if (propertyName == "ALIASED_TARGET") { | |
| propertyValue = cmValue(target->GetName()); | |
| } else { | |
| static std::string const sTrue = "TRUE"; | |
| static std::string const sFalse = "FALSE"; | |
| propertyValue = cmValue( | |
| mf.GetGlobalGenerator()->IsAlias(targetName) ? sTrue : sFalse); | |
| } | |
| } else { | |
| propertyValue = cmValue(nullptr); | |
| } | |
| return cmGetTargetPropertyResult::Success; | |
| } | |
| propertyValue = target->GetComputedProperty(propertyName, mf); | |
| if (!propertyValue) { | |
| propertyValue = target->GetProperty(propertyName); | |
| } | |
| return cmGetTargetPropertyResult::Success; | |
| } |