You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
4.6 KiB
169 lines
4.6 KiB
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
file Copyright.txt or https://cmake.org/licensing for details. */
|
|
#pragma once
|
|
|
|
#include "cmConfigure.h" // IWYU pragma: keep
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
class cmCPackComponentGroup;
|
|
|
|
/** \class cmCPackInstallationType
|
|
* \brief A certain type of installation, which encompasses a
|
|
* set of components.
|
|
*/
|
|
class cmCPackInstallationType
|
|
{
|
|
public:
|
|
/// The name of the installation type (used to reference this
|
|
/// installation type).
|
|
std::string Name;
|
|
|
|
/// The name of the installation type as displayed to the user.
|
|
std::string DisplayName;
|
|
|
|
/// The index number of the installation type. This is an arbitrary
|
|
/// numbering from 1 to the number of installation types.
|
|
unsigned Index;
|
|
};
|
|
|
|
/** \class cmCPackComponent
|
|
* \brief A single component to be installed by CPack.
|
|
*/
|
|
class cmCPackComponent
|
|
{
|
|
public:
|
|
cmCPackComponent()
|
|
: Group(nullptr)
|
|
, IsRequired(true)
|
|
, IsHidden(false)
|
|
, IsDisabledByDefault(false)
|
|
, IsDownloaded(false)
|
|
, TotalSize(0)
|
|
{
|
|
}
|
|
|
|
/// The name of the component (used to reference the component).
|
|
std::string Name;
|
|
|
|
/// The name of the component as displayed to the user.
|
|
std::string DisplayName;
|
|
|
|
/// The component group that contains this component (if any).
|
|
cmCPackComponentGroup* Group;
|
|
|
|
/// Whether this component group must always be installed.
|
|
bool IsRequired : 1;
|
|
|
|
/// Whether this component group is hidden. A hidden component group
|
|
/// is always installed. However, it may still be shown to the user.
|
|
bool IsHidden : 1;
|
|
|
|
/// Whether this component defaults to "disabled".
|
|
bool IsDisabledByDefault : 1;
|
|
|
|
/// Whether this component should be downloaded on-the-fly. If false,
|
|
/// the component will be a part of the installation package.
|
|
bool IsDownloaded : 1;
|
|
|
|
/// A description of this component.
|
|
std::string Description;
|
|
|
|
/// The installation types that this component is a part of.
|
|
std::vector<cmCPackInstallationType*> InstallationTypes;
|
|
|
|
/// If IsDownloaded is true, the name of the archive file that
|
|
/// contains the files that are part of this component.
|
|
std::string ArchiveFile;
|
|
|
|
/// The file to pass to --component-plist when using the
|
|
/// productbuild generator.
|
|
std::string Plist;
|
|
|
|
/// The components that this component depends on.
|
|
std::vector<cmCPackComponent*> Dependencies;
|
|
|
|
/// The components that depend on this component.
|
|
std::vector<cmCPackComponent*> ReverseDependencies;
|
|
|
|
/// The list of installed files that are part of this component.
|
|
std::vector<std::string> Files;
|
|
|
|
/// The list of installed directories that are part of this component.
|
|
std::vector<std::string> Directories;
|
|
|
|
/// Get the total installed size of all of the files in this
|
|
/// component, in bytes. installDir is the directory into which the
|
|
/// component was installed.
|
|
unsigned long GetInstalledSize(const std::string& installDir) const;
|
|
|
|
/// Identical to GetInstalledSize, but returns the result in
|
|
/// kilobytes.
|
|
unsigned long GetInstalledSizeInKbytes(const std::string& installDir) const;
|
|
|
|
private:
|
|
mutable unsigned long TotalSize;
|
|
};
|
|
|
|
/** \class cmCPackComponentGroup
|
|
* \brief A component group to be installed by CPack.
|
|
*/
|
|
class cmCPackComponentGroup
|
|
{
|
|
public:
|
|
cmCPackComponentGroup()
|
|
: ParentGroup(nullptr)
|
|
{
|
|
}
|
|
|
|
/// The name of the group (used to reference the group).
|
|
std::string Name;
|
|
|
|
/// The name of the component as displayed to the user.
|
|
std::string DisplayName;
|
|
|
|
/// The description of this component group.
|
|
std::string Description;
|
|
|
|
/// Whether the name of the component will be shown in bold.
|
|
bool IsBold : 1;
|
|
|
|
/// Whether the section should be expanded by default
|
|
bool IsExpandedByDefault : 1;
|
|
|
|
/// The components within this group.
|
|
std::vector<cmCPackComponent*> Components;
|
|
|
|
/// The parent group of this component group (if any).
|
|
cmCPackComponentGroup* ParentGroup;
|
|
|
|
/// The subgroups of this group.
|
|
std::vector<cmCPackComponentGroup*> Subgroups;
|
|
};
|
|
|
|
/** \class cmCPackInstallCMakeProject
|
|
* \brief A single quadruplet from the CPACK_INSTALL_CMAKE_PROJECTS variable.
|
|
*/
|
|
class cmCPackInstallCMakeProject
|
|
{
|
|
public:
|
|
/// The directory of the CMake project.
|
|
std::string Directory;
|
|
|
|
/// The name of the CMake project.
|
|
std::string ProjectName;
|
|
|
|
/// The name of the component (or component set) to install.
|
|
std::string Component;
|
|
|
|
/// The subdirectory to install into.
|
|
std::string SubDirectory;
|
|
|
|
/// The list of installation types.
|
|
std::vector<cmCPackInstallationType*> InstallationTypes;
|
|
|
|
/// The list of components.
|
|
std::vector<cmCPackComponent*> Components;
|
|
};
|