1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
/*=========================================================================
Program: CMake - Cross-Platform Makefile Generator
Module: $RCSfile: cmCPackGenericGenerator.h,v $
Language: C++
Date: $Date: 2006/10/27 20:01:49 $
Version: $Revision: 1.10.2.3 $
Copyright (c) 2002 Kitware, Inc. All rights reserved.
See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef cmCPackGenericGenerator_h
#define cmCPackGenericGenerator_h
#include "cmObject.h"
#define cmCPackTypeMacro(class, superclass) \
cmTypeMacro(class, superclass); \
static cmCPackGenericGenerator* CreateGenerator() { return new class; }
#define cmCPackLogger(logType, msg) \
do { \
cmOStringStream cmCPackLog_msg; \
cmCPackLog_msg << msg; \
this->Logger->Log(logType, __FILE__, __LINE__,\
cmCPackLog_msg.str().c_str());\
} while ( 0 )
#ifdef cerr
# undef cerr
#endif
#define cerr no_cerr_use_cmCPack_Log
#ifdef cout
# undef cout
#endif
#define cout no_cout_use_cmCPack_Log
class cmMakefile;
class cmCPackLog;
/** \class cmCPackGenericGenerator
* \brief A superclass of all CPack Generators
*
*/
class cmCPackGenericGenerator : public cmObject
{
public:
cmTypeMacro(cmCPackGenericGenerator, cmObject);
/**
* If verbose then more informaiton is printed out
*/
void SetVerbose(bool val) { this->GeneratorVerbose = val; }
/**
* Do the actual processing. Subclass has to override it.
* Return 0 if error.
*/
virtual int ProcessGenerator();
/**
* Initialize generator
*/
int Initialize(const char* name, cmMakefile* mf, const char* argv0);
/**
* Construct generator
*/
cmCPackGenericGenerator();
virtual ~cmCPackGenericGenerator();
//! Set and get the options
void SetOption(const char* op, const char* value);
void SetOptionIfNotSet(const char* op, const char* value);
const char* GetOption(const char* op);
//! Set all the variables
int FindRunningCMake(const char* arg0);
//! Set the logger
void SetLogger(cmCPackLog* log) { this->Logger = log; }
//! Display verbose information via logger
void DisplayVerboseOutput(const char* msg, float progress);
protected:
int PrepareNames();
int InstallProject();
int CleanTemporaryDirectory();
virtual const char* GetOutputExtension() { return "cpack"; }
virtual const char* GetOutputPostfix() { return 0; }
virtual int CompressFiles(const char* outFileName, const char* toplevel,
const std::vector<std::string>& files);
virtual const char* GetInstallPath();
virtual const char* GetInstallPrefix() { return "/"; }
virtual std::string FindTemplate(const char* name);
virtual bool ConfigureFile(const char* inName, const char* outName);
virtual bool ConfigureString(const std::string& input, std::string& output);
virtual int InitializeInternal();
//! Run install commands if specified
virtual int InstallProjectViaInstallCommands(
bool movable, const char* tempInstallDirectory);
virtual int InstallProjectViaInstallScript(
bool movable, const char* tempInstallDirectory);
virtual int InstallProjectViaInstalledDirectories(
bool movable, const char* tempInstallDirectory);
virtual int InstallProjectViaInstallCMakeProjects(
bool movable, const char* tempInstallDirectory);
bool GeneratorVerbose;
std::string Name;
std::string InstallPath;
std::string CPackSelf;
std::string CMakeSelf;
std::string CMakeRoot;
cmCPackLog* Logger;
private:
cmMakefile* MakefileMap;
};
#endif
|