/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file LICENSE.rst or https://cmake.org/licensing for details. */ #pragma once #include #include #include "cmListFileCache.h" class cmLinkItem; class cmake; class cmGeneratorTarget; struct cmGeneratorExpressionDAGChecker; namespace cm { namespace GenEx { struct Context; } class TargetPropertyEntry { protected: static cmLinkItem NoLinkItem; public: TargetPropertyEntry(cmLinkItem const& item); virtual ~TargetPropertyEntry() = default; static std::unique_ptr Create( cmake& cmakeInstance, const BT& propertyValue, bool evaluateForBuildsystem = false); virtual std::string const& Evaluate( cm::GenEx::Context const& context, cmGeneratorTarget const* headTarget, cmGeneratorExpressionDAGChecker* dagChecker) const = 0; virtual cmListFileBacktrace GetBacktrace() const = 0; virtual std::string const& GetInput() const = 0; virtual bool GetHadContextSensitiveCondition() const; cmLinkItem const& LinkItem; }; }