| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file LICENSE.rst or https://cmake.org/licensing for details. */ |
| #pragma once |
| |
| #include <memory> |
| #include <string> |
| |
| #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<TargetPropertyEntry> Create( |
| cmake& cmakeInstance, const BT<std::string>& 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; |
| }; |
| } |