| /*============================================================================ |
| CMake - Cross Platform Makefile Generator |
| Copyright 2000-2009 Kitware, Inc., Insight Software Consortium |
| |
| Distributed under the OSI-approved BSD License (the "License"); |
| see accompanying file Copyright.txt for details. |
| |
| This software is distributed WITHOUT ANY WARRANTY; without even the |
| implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| See the License for more information. |
| ============================================================================*/ |
| #include "cmStandardIncludes.h" |
| |
| #include <stack> |
| |
| #include <cmsys/RegularExpression.hxx> |
| |
| class cmTarget; |
| class cmMakefile; |
| class cmListFileBacktrace; |
| |
| /** \class cmGeneratorExpression |
| * \brief Evaluate generate-time query expression syntax. |
| * |
| * cmGeneratorExpression instances are used by build system generator |
| * implementations to evaluate the $<> generator expression syntax. |
| * Generator expressions are evaluated just before the generate step |
| * writes strings into the build system. They have knowledge of the |
| * build configuration which is not available at configure time. |
| */ |
| class cmGeneratorExpression |
| { |
| public: |
| /** Construct with an evaluation context and configuration. */ |
| cmGeneratorExpression(cmMakefile* mf, const char* config, |
| cmListFileBacktrace const& backtrace, |
| bool quiet = false); |
| |
| /** Evaluate generator expressions in a string. */ |
| const char* Process(std::string const& input); |
| const char* Process(const char* input); |
| |
| /** Get set of targets found during evaluations. */ |
| std::set<cmTarget*> const& GetTargets() const |
| { return this->Targets; } |
| private: |
| cmMakefile* Makefile; |
| const char* Config; |
| cmListFileBacktrace const& Backtrace; |
| bool Quiet; |
| std::vector<char> Data; |
| std::stack<size_t> Barriers; |
| cmsys::RegularExpression TargetInfo; |
| std::set<cmTarget*> Targets; |
| bool Evaluate(); |
| bool Evaluate(const char* expr, std::string& result); |
| bool EvaluateTargetInfo(std::string& result); |
| }; |