cmCPackProductBuildGenerator.h 1.66 KB
Newer Older
1 2
/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
   file Copyright.txt or https://cmake.org/licensing for details.  */
3 4 5
#ifndef cmCPackProductBuildGenerator_h
#define cmCPackProductBuildGenerator_h

Daniel Pfeifer's avatar
Daniel Pfeifer committed
6
#include <cmConfigure.h>
7

Daniel Pfeifer's avatar
Daniel Pfeifer committed
8 9 10
#include <string>

#include "cmCPackGenerator.h"
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#include "cmCPackPKGGenerator.h"

class cmCPackComponent;

/** \class cmCPackProductBuildGenerator
 * \brief A generator for ProductBuild files
 *
 */
class cmCPackProductBuildGenerator : public cmCPackPKGGenerator
{
public:
  cmCPackTypeMacro(cmCPackProductBuildGenerator, cmCPackPKGGenerator);

  /**
   * Construct generator
   */
  cmCPackProductBuildGenerator();
  virtual ~cmCPackProductBuildGenerator();

protected:
31 32 33
  int InitializeInternal() CM_OVERRIDE;
  int PackageFiles() CM_OVERRIDE;
  const char* GetOutputExtension() CM_OVERRIDE { return ".pkg"; }
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

  // Run ProductBuild with the given command line, which will (if
  // successful) produce the given package file. Returns true if
  // ProductBuild succeeds, false otherwise.
  bool RunProductBuild(const std::string& command);

  // Generate a package in the file packageFile for the given
  // component.  All of the files within this component are stored in
  // the directory packageDir. Returns true if successful, false
  // otherwise.
  bool GenerateComponentPackage(const std::string& packageFileDir,
                                const std::string& packageFileName,
                                const std::string& packageDir,
                                const cmCPackComponent* component);

  const char* GetComponentScript(const char* script,
                                 const char* script_component);
};

#endif