cmGeneratorTarget: Factor out EvaluatedTargetProperty infrastructure

Make it available outside the `cmGeneratorTarget` implementation.
In particular, we will later use it in `cmQtAutoGenInitializer`.
This commit is contained in:
Orkun Tokdemir
2023-04-03 16:55:13 +02:00
committed by Brad King
parent 2daba01ddf
commit 7cecb6353e
6 changed files with 253 additions and 189 deletions

View File

@@ -1291,3 +1291,25 @@ private:
};
mutable std::map<std::string, InfoByConfig> Configs;
};
class cmGeneratorTarget::TargetPropertyEntry
{
protected:
static cmLinkImplItem NoLinkImplItem;
public:
TargetPropertyEntry(cmLinkImplItem const& item);
virtual ~TargetPropertyEntry() = default;
virtual const std::string& Evaluate(
cmLocalGenerator* lg, const std::string& config,
cmGeneratorTarget const* headTarget,
cmGeneratorExpressionDAGChecker* dagChecker,
std::string const& language) const = 0;
virtual cmListFileBacktrace GetBacktrace() const = 0;
virtual std::string const& GetInput() const = 0;
virtual bool GetHadContextSensitiveCondition() const;
cmLinkImplItem const& LinkImplItem;
};