/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #pragma once #include #include #include #include #include "cmListFileCache.h" class cmCompiledGeneratorExpression; struct cmGeneratorExpressionDAGChecker; class cmGeneratorTarget; class cmLocalGenerator; class cmFileSet { public: cmFileSet(std::string name, std::string type); const std::string& GetName() const { return this->Name; } const std::string& GetType() const { return this->Type; } void ClearDirectoryEntries(); void AddDirectoryEntry(BT directories); const std::vector>& GetDirectoryEntries() const { return this->DirectoryEntries; } void ClearFileEntries(); void AddFileEntry(BT files); const std::vector>& GetFileEntries() const { return this->FileEntries; } std::vector> CompileFileEntries() const; std::vector> CompileDirectoryEntries() const; std::vector EvaluateDirectoryEntries( const std::vector>& cges, cmLocalGenerator* lg, const std::string& config, const cmGeneratorTarget* target, cmGeneratorExpressionDAGChecker* dagChecker = nullptr) const; void EvaluateFileEntry( const std::vector& dirs, std::map>& filesPerDir, const std::unique_ptr& cge, cmLocalGenerator* lg, const std::string& config, const cmGeneratorTarget* target, cmGeneratorExpressionDAGChecker* dagChecker = nullptr) const; static bool IsValidName(const std::string& name); private: std::string Name; std::string Type; std::vector> DirectoryEntries; std::vector> FileEntries; };