cmGeneratorExpressionEvaluationFile.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef cmGeneratorExpressionEvaluationFile_h
  4. #define cmGeneratorExpressionEvaluationFile_h
  5. #include "cmConfigure.h" // IWYU pragma: keep
  6. #include <map>
  7. #include <memory> // IWYU pragma: keep
  8. #include <string>
  9. #include <vector>
  10. #include "cmGeneratorExpression.h"
  11. #include "cmPolicies.h"
  12. #include "cm_sys_stat.h"
  13. class cmLocalGenerator;
  14. class cmGeneratorExpressionEvaluationFile
  15. {
  16. public:
  17. cmGeneratorExpressionEvaluationFile(
  18. const std::string& input,
  19. std::unique_ptr<cmCompiledGeneratorExpression> outputFileExpr,
  20. std::unique_ptr<cmCompiledGeneratorExpression> condition,
  21. bool inputIsContent, cmPolicies::PolicyStatus policyStatusCMP0070);
  22. void Generate(cmLocalGenerator* lg);
  23. std::vector<std::string> GetFiles() const { return this->Files; }
  24. void CreateOutputFile(cmLocalGenerator* lg, std::string const& config);
  25. private:
  26. void Generate(cmLocalGenerator* lg, const std::string& config,
  27. const std::string& lang,
  28. cmCompiledGeneratorExpression* inputExpression,
  29. std::map<std::string, std::string>& outputFiles, mode_t perm);
  30. enum PathRole
  31. {
  32. PathForInput,
  33. PathForOutput
  34. };
  35. std::string FixRelativePath(std::string const& filePath, PathRole role,
  36. cmLocalGenerator* lg);
  37. private:
  38. const std::string Input;
  39. const std::unique_ptr<cmCompiledGeneratorExpression> OutputFileExpr;
  40. const std::unique_ptr<cmCompiledGeneratorExpression> Condition;
  41. std::vector<std::string> Files;
  42. const bool InputIsContent;
  43. cmPolicies::PolicyStatus PolicyStatusCMP0070;
  44. };
  45. #endif