| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #ifndef cmCPackComponentGroup_h |
| #define cmCPackComponentGroup_h |
| |
| #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; |
| }; |
| |
| #endif |