/* 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; }