cmCPackDragNDropGenerator.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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>
  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. virtual ~cmCPackDragNDropGenerator();
  21. protected:
  22. int InitializeInternal() CM_OVERRIDE;
  23. const char* GetOutputExtension() CM_OVERRIDE;
  24. int PackageFiles() CM_OVERRIDE;
  25. bool SupportsComponentInstallation() const CM_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) CM_OVERRIDE;
  31. int CreateDMG(const std::string& src_dir, const std::string& output_file);
  32. std::string InstallPrefix;
  33. private:
  34. std::string slaDirectory;
  35. bool singleLicense;
  36. bool WriteLicense(cmGeneratedFileStream& outputStream, int licenseNumber,
  37. std::string licenseLanguage, std::string licenseFile,
  38. std::string* error);
  39. bool BreakLongLine(const std::string& line, std::vector<std::string>& lines,
  40. std::string* error);
  41. void EscapeQuotesAndBackslashes(std::string& line);
  42. };
  43. #endif