cmCPackGenericGenerator.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /*=========================================================================
  2. Program: CMake - Cross-Platform Makefile Generator
  3. Module: $RCSfile$
  4. Language: C++
  5. Date: $Date$
  6. Version: $Revision$
  7. Copyright (c) 2002 Kitware, Inc. All rights reserved.
  8. See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
  9. This software is distributed WITHOUT ANY WARRANTY; without even
  10. the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
  11. PURPOSE. See the above copyright notices for more information.
  12. =========================================================================*/
  13. #ifndef cmCPackGenericGenerator_h
  14. #define cmCPackGenericGenerator_h
  15. #include "cmObject.h"
  16. #define cmCPackTypeMacro(class, superclass) \
  17. cmTypeMacro(class, superclass); \
  18. static cmCPackGenericGenerator* CreateGenerator() { return new class; }
  19. #define cmCPackLogger(logType, msg) \
  20. do { \
  21. cmOStringStream cmCPackLog_msg; \
  22. cmCPackLog_msg << msg; \
  23. m_Logger->Log(logType, __FILE__, __LINE__, cmCPackLog_msg.str().c_str());\
  24. } while ( 0 )
  25. #ifdef cerr
  26. # undef cerr
  27. #endif
  28. #define cerr no_cerr_use_cmCPack_Log
  29. #ifdef cout
  30. # undef cout
  31. #endif
  32. #define cout no_cout_use_cmCPack_Log
  33. class cmMakefile;
  34. class cmCPackLog;
  35. /** \class cmCPackGenericGenerator
  36. * \brief A superclass of all CPack Generators
  37. *
  38. */
  39. class cmCPackGenericGenerator : public cmObject
  40. {
  41. public:
  42. cmTypeMacro(cmCPackGenericGenerator, cmObject);
  43. /**
  44. * If verbose then more informaiton is printed out
  45. */
  46. void SetVerbose(bool val) { m_GeneratorVerbose = val; }
  47. /**
  48. * Do the actual processing. Subclass has to override it.
  49. * Return 0 if error.
  50. */
  51. virtual int ProcessGenerator();
  52. /**
  53. * Initialize generator
  54. */
  55. virtual int Initialize(const char* name, cmMakefile* mf);
  56. /**
  57. * Construct generator
  58. */
  59. cmCPackGenericGenerator();
  60. virtual ~cmCPackGenericGenerator();
  61. //! Set and get the options
  62. void SetOption(const char* op, const char* value);
  63. const char* GetOption(const char* op);
  64. //! Set all the variables
  65. int FindRunningCMake(const char* arg0);
  66. //! Set the logger
  67. void SetLogger(cmCPackLog* log) { m_Logger = log; }
  68. protected:
  69. int PrepareNames();
  70. int InstallProject();
  71. virtual const char* GetOutputExtension() { return "cpack"; }
  72. virtual const char* GetOutputPostfix() { return 0; }
  73. virtual int CompressFiles(const char* outFileName, const char* toplevel,
  74. const std::vector<std::string>& files);
  75. virtual const char* GetInstallPath();
  76. virtual const char* GetInstallPrefix() { return "/"; }
  77. virtual std::string FindTemplate(const char* name);
  78. virtual bool ConfigureFile(const char* inName, const char* outName);
  79. bool m_GeneratorVerbose;
  80. std::string m_Name;
  81. std::string m_InstallPath;
  82. std::string m_CPackSelf;
  83. std::string m_CMakeSelf;
  84. std::string m_CMakeRoot;
  85. cmCPackLog* m_Logger;
  86. private:
  87. cmMakefile* m_MakefileMap;
  88. };
  89. #endif