cmCPackDragNDropGenerator.h 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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 cmCPackDragNDropGenerator_h
  4. #define cmCPackDragNDropGenerator_h
  5. #include "cmConfigure.h" // IWYU pragma: keep
  6. #include <sstream>
  7. #include <stddef.h>
  8. #include <string>
  9. #include <vector>
  10. #include "cmCPackGenerator.h"
  11. class cmGeneratedFileStream;
  12. /** \class cmCPackDragNDropGenerator
  13. * \brief A generator for OSX drag-n-drop installs
  14. */
  15. class cmCPackDragNDropGenerator : public cmCPackGenerator
  16. {
  17. public:
  18. cmCPackTypeMacro(cmCPackDragNDropGenerator, cmCPackGenerator);
  19. cmCPackDragNDropGenerator();
  20. ~cmCPackDragNDropGenerator() override;
  21. protected:
  22. int InitializeInternal() override;
  23. const char* GetOutputExtension() override;
  24. int PackageFiles() override;
  25. bool SupportsComponentInstallation() const override;
  26. bool CopyFile(std::ostringstream& source, std::ostringstream& target);
  27. bool CreateEmptyFile(std::ostringstream& target, size_t size);
  28. bool RunCommand(std::ostringstream& command, std::string* output = 0);
  29. std::string GetComponentInstallDirNameSuffix(
  30. const std::string& componentName) override;
  31. int CreateDMG(const std::string& src_dir, const std::string& output_file);
  32. private:
  33. std::string slaDirectory;
  34. bool singleLicense;
  35. bool WriteLicense(cmGeneratedFileStream& outputStream, int licenseNumber,
  36. std::string licenseLanguage,
  37. const std::string& licenseFile, std::string* error);
  38. bool BreakLongLine(const std::string& line, std::vector<std::string>& lines,
  39. std::string* error);
  40. void EscapeQuotesAndBackslashes(std::string& line);
  41. };
  42. #endif