| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416 | 
							- CPack NuGet Generator
 
- ---------------------
 
- .. versionadded:: 3.12
 
- When build a NuGet package there is no direct way to control an output
 
- filename due a lack of the corresponding CLI option of NuGet, so there
 
- is no :variable:`!CPACK_NUGET_PACKAGE_FILE_NAME` variable. To form the output filename
 
- NuGet uses the package name and the version according to its built-in rules.
 
- Also, be aware that including a top level directory
 
- (:variable:`CPACK_INCLUDE_TOPLEVEL_DIRECTORY`) is ignored by this generator.
 
- Variables specific to CPack NuGet generator
 
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
- The CPack NuGet generator may be used to create NuGet packages using
 
- :module:`CPack`. The CPack NuGet generator is a :module:`CPack` generator thus
 
- it uses the :variable:`!CPACK_XXX` variables used by :module:`CPack`.
 
- The CPack NuGet generator has specific features which are controlled by the
 
- specifics :variable:`!CPACK_NUGET_XXX` variables. In the "one per group" mode
 
- (see :variable:`CPACK_COMPONENTS_GROUPING`), ``<compName>`` placeholder
 
- in the variables below would contain a group name (uppercased and turned into
 
- a "C" identifier).
 
- List of CPack NuGet generator specific variables:
 
- .. variable:: CPACK_NUGET_COMPONENT_INSTALL
 
-  Enable component packaging for CPack NuGet generator
 
-  :Mandatory: No
 
-  :Default: ``OFF``
 
- .. variable:: CPACK_NUGET_PACKAGE_DEBUG
 
-  Enable debug messages while executing CPack NuGet generator.
 
-  :Mandatory: No
 
-  :Default: ``OFF``
 
- Required metadata variables
 
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
- .. variable:: CPACK_NUGET_PACKAGE_NAME
 
-               CPACK_NUGET_<compName>_PACKAGE_NAME
 
-  The NUGET package name. ``CPACK_NUGET_PACKAGE_NAME`` is used as the
 
-  package ``id`` on nuget.org_
 
-  :Mandatory: Yes
 
-  :Default: :variable:`CPACK_PACKAGE_NAME`
 
- .. variable:: CPACK_NUGET_PACKAGE_VERSION
 
-               CPACK_NUGET_<compName>_PACKAGE_VERSION
 
-  The NuGet package version.
 
-  :Mandatory: Yes
 
-  :Default: :variable:`CPACK_PACKAGE_VERSION`
 
- .. variable:: CPACK_NUGET_PACKAGE_DESCRIPTION
 
-               CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION
 
-  A long description of the package for UI display.
 
-  :Mandatory: Yes
 
-  :Default:
 
-     - :variable:`CPACK_COMPONENT_<compName>_DESCRIPTION`,
 
-     - :variable:`!CPACK_COMPONENT_GROUP_<groupName>_DESCRIPTION`,
 
-     - :variable:`CPACK_PACKAGE_DESCRIPTION`
 
- .. variable:: CPACK_NUGET_PACKAGE_AUTHORS
 
-               CPACK_NUGET_<compName>_PACKAGE_AUTHORS
 
-  A comma-separated list of packages authors, matching the profile names
 
-  on nuget.org_. These are displayed in the NuGet Gallery on
 
-  nuget.org_ and are used to cross-reference packages by the same
 
-  authors.
 
-  :Mandatory: Yes
 
-  :Default: :variable:`CPACK_PACKAGE_VENDOR`
 
- Optional metadata variables
 
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
- .. variable:: CPACK_NUGET_PACKAGE_OWNERS
 
-               CPACK_NUGET_<compName>_PACKAGE_OWNERS
 
-  .. deprecated:: 3.30
 
-   Use authors (:variable:`CPACK_NUGET_PACKAGE_AUTHORS`) instead.
 
-  A comma-separated list of the package creators using profile names
 
-  on nuget.org_. This is often the same list as in authors,
 
-  and is ignored when uploading the package to nuget.org_.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_HOMEPAGE_URL
 
-               CPACK_NUGET_<compName>_PACKAGE_HOMEPAGE_URL
 
-  An URL for the package's home page, often shown in UI displays as well
 
-  as nuget.org_.
 
-  :Mandatory: No
 
-  :Default: :variable:`CPACK_PACKAGE_HOMEPAGE_URL`
 
- .. variable:: CPACK_NUGET_PACKAGE_LICENSEURL
 
-               CPACK_NUGET_<compName>_PACKAGE_LICENSEURL
 
-  .. deprecated:: 3.20
 
-   Use a local license file
 
-   (:variable:`CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME`)
 
-   or a `SPDX license identifier`_
 
-   (:variable:`CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION`) instead.
 
-  An URL for the package's license, often shown in UI displays as well
 
-  as on nuget.org_.
 
-  :Mandatory: No
 
-  :Default: None
 
-  :Supported: NuGet 4.9.0 and above
 
- .. variable:: CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME
 
-               CPACK_NUGET_<compName>_PACKAGE_LICENSE_FILE_NAME
 
-  .. versionadded:: 3.20
 
-  The package's license file in :file:`.txt` or :file:`.md` format.
 
-  If :variable:`!CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME` is specified,
 
-  :variable:`!CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION` is ignored.
 
-  :Mandatory: No
 
-  :Default: None
 
-  :Supported: NuGet 4.9.0 and above
 
- .. variable:: CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION
 
-               CPACK_NUGET_<compName>_PACKAGE_LICENSE_EXPRESSION
 
-  .. versionadded:: 3.20
 
-  A Software Package Data Exchange `SPDX license identifier`_ such as
 
-  ``MIT``, ``BSD-3-Clause``, or ``LGPL-3.0-or-later``. In the case of a
 
-  choice of licenses or more complex restrictions, compound license
 
-  expressions may be formed using boolean operators, for example
 
-  ``MIT OR BSD-3-Clause``.  See the `SPDX specification`_ for guidance
 
-  on forming complex license expressions.
 
-  If :variable:`CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME` is specified,
 
-  :variable:`!CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION` is ignored.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_ICONURL
 
-               CPACK_NUGET_<compName>_PACKAGE_ICONURL
 
-  .. deprecated:: 3.20
 
-   Use a local icon file (:variable:`CPACK_NUGET_PACKAGE_ICON`) instead.
 
-  An URL for a 64x64 image with transparency background to use as the
 
-  icon for the package in UI display.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_ICON
 
-               CPACK_NUGET_<compName>_PACKAGE_ICON
 
-  .. versionadded:: 3.20
 
-  The filename of a 64x64 image with transparency background to use as the
 
-  icon for the package in UI display.
 
-  :Mandatory: No
 
-  :Default: None
 
-  :Supported: NuGet 5.3.0 and above
 
- .. variable:: CPACK_NUGET_PACKAGE_README
 
-               CPACK_NUGET_<compName>_PACKAGE_README
 
-  .. versionadded:: 3.30
 
-  The package path relative to the root of the package to a readme file.
 
-  Supported file formats include only Markdown (``*.md``).
 
-  :Mandatory: No
 
-  :Default: None
 
-  :Supported: NuGet 5.10.0 preview 2 and above
 
- .. variable:: CPACK_NUGET_PACKAGE_REQUIRE_LICENSE_ACCEPTANCE
 
-  When set to a true value, the user will be prompted to accept the license
 
-  before installing the package.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY
 
-               CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION_SUMMARY
 
-  .. deprecated:: 3.30
 
-   Summary is being deprecated. Use description
 
-   (:variable:`CPACK_NUGET_PACKAGE_DESCRIPTION`) instead.
 
-  A short description of the package for UI display. If omitted, a
 
-  truncated version of description is used.
 
-  :Mandatory: No
 
-  :Default: :variable:`CPACK_PACKAGE_DESCRIPTION_SUMMARY`
 
- .. variable:: CPACK_NUGET_PACKAGE_RELEASE_NOTES
 
-               CPACK_NUGET_<compName>_PACKAGE_RELEASE_NOTES
 
-  A description of the changes made in this release of the package,
 
-  often used in UI like the Updates tab of the Visual Studio Package
 
-  Manager in place of the package description.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_COPYRIGHT
 
-               CPACK_NUGET_<compName>_PACKAGE_COPYRIGHT
 
-  Copyright details for the package.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_LANGUAGE
 
-               CPACK_NUGET_<compName>_PACKAGE_LANGUAGE
 
-  .. versionadded:: 3.20
 
-  Locale specifier for the package, for example ``en_CA``.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_TAGS
 
-               CPACK_NUGET_<compName>_PACKAGE_TAGS
 
-  A space-delimited list of tags and keywords that describe the
 
-  package and aid discoverability of packages through search and
 
-  filtering.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_REPOSITORY_URL
 
-               CPACK_NUGET_<compName>_REPOSITORY_URL
 
-   .. versionadded:: 3.30
 
-  Repository metadata allows you to map the ``*.nupkg`` to the repository
 
-  that built it. This should be a publicly available URL that can be invoked
 
-  directly by a version control software. It should not be an HTML page as
 
-  this is meant for the computer.
 
-  :Mandatory: No
 
-  :Default: None
 
-  :Supported: NuGet 4.0 and above
 
- .. variable:: CPACK_NUGET_PACKAGE_REPOSITORY_TYPE
 
-               CPACK_NUGET_<compName>_REPOSITORY_TYPE
 
-   .. versionadded:: 3.30
 
-  A type of the VCS repository.  When uploading a package to nuget.org_, the
 
-  type is limited to 100 characters.
 
-  :Mandatory: Yes, if repository URL has been specified
 
-  :Default: None
 
-  :Supported: NuGet 4.0 and above
 
- .. variable:: CPACK_NUGET_PACKAGE_REPOSITORY_BRANCH
 
-               CPACK_NUGET_<compName>_REPOSITORY_BRANCH
 
-   .. versionadded:: 3.30
 
-  A VSC branch name to build the package.
 
-  :Mandatory: No
 
-  :Default: None
 
-  :Supported: NuGet 4.6 and above
 
- .. variable:: CPACK_NUGET_PACKAGE_REPOSITORY_COMMIT
 
-               CPACK_NUGET_<compName>_REPOSITORY_COMMIT
 
-   .. versionadded:: 3.30
 
-  A SHA-1 hash of the commit to build the package.
 
-  :Mandatory: No
 
-  :Default: None
 
-  :Supported: NuGet 4.6 and above
 
- .. variable:: CPACK_NUGET_PACKAGE_TITLE
 
-               CPACK_NUGET_<compName>_PACKAGE_TITLE
 
-  A human-friendly title of the package, typically used in UI displays
 
-  as on nuget.org_ and the Package Manager in Visual Studio. If not
 
-  specified, the package ID is used.
 
-  :Mandatory: No
 
-  :Default:
 
-     - :variable:`CPACK_COMPONENT_<compName>_DISPLAY_NAME`,
 
-     - :variable:`!CPACK_COMPONENT_GROUP_<groupName>_DISPLAY_NAME`
 
- Dependencies specification
 
- ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
- .. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES
 
-               CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES
 
-  A list of default (not framework-specific) package dependencies.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES_<dependency>_VERSION
 
-               CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<dependency>_VERSION
 
-  A `version specification`_ for the particular dependency, where
 
-  ``<dependency>`` is an item of the dependency list (see above).
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_TFMS
 
-               CPACK_NUGET_<compName>_PACKAGE_TFMS
 
-  .. versionadded:: 3.30
 
-  A list of Target Framework Monikers (TFMs) for the package, e.g., "net47;netcoreapp21".
 
-  For each of these TFMs a `dependency group`_ will be generated in the dependencies block of the NuGet
 
-  package. Framework-specific dependencies can be added to these groups with the TFM
 
-  dependency lists (see below).
 
-  This variable is particularly useful for fixing warnings `NU5128`_.
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES_<tfm>
 
-               CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<tfm>
 
-  .. versionadded:: 3.30
 
-  A list of package dependencies that apply specifically to the ``<tfm>`` framework, where ``<tfm>``
 
-  is an item from the TFMs list (see above).
 
-  :Mandatory: No
 
-  :Default: None
 
- .. variable:: CPACK_NUGET_PACKAGE_DEPENDENCIES_<tfm>_<dependency>_VERSION
 
-               CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<tfm>_<dependency>_VERSION
 
-  .. versionadded:: 3.30
 
-  A `version specification`_ for the particular framework-specific dependency, where
 
-  ``<dependency>`` is an item of the ``<tfm>``-specific dependency list (see above).
 
-  :Mandatory: No
 
-  :Default: None
 
- Example usage
 
- ^^^^^^^^^^^^^
 
- .. code-block:: cmake
 
-   set(CPACK_GENERATOR NuGet)
 
-   # Set up package metadata
 
-   set(CPACK_PACKAGE_NAME SamplePackage)
 
-   set(CPACK_PACKAGE_VERSION "1.0.0")
 
-   set(CPACK_PACKAGE_VENDOR "Example Inc")
 
-   set(CPACK_NUGET_PACKAGE_AUTHORS "ExampleInc")
 
-   set(CPACK_PACKAGE_DESCRIPTION "A .NET wrapper around the foobar library for frobbling bratchens")
 
-   set(CPACK_PACKAGE_HOMEPAGE_URL "https://www.example.com")
 
-   set(CPACK_NUGET_PACKAGE_REPOSITORY_URL "https://github.com/example/libfoobar.git")
 
-   set(CPACK_NUGET_PACKAGE_REPOSITORY_TYPE git)
 
-   set(CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION "MIT")
 
-   # Set up dependencies
 
-   set(CPACK_NUGET_PACKAGE_TFMS "net4;net6.0")
 
-   set(CPACK_NUGET_PACKAGE_DEPENDENCIES_net4 "Foo;Bar")
 
-   # NB: If a version number is omitted, the dependency will not be created
 
-   set(CPACK_NUGET_PACKAGE_DEPENDENCIES_net4_Foo_VERSION "1.23")
 
-   set(CPACK_NUGET_PACKAGE_DEPENDENCIES_net4_Bar_VERSION "4.3.2")
 
-   # NB: General dependencies (not framework-specific) go in this variable
 
-   set(CPACK_NUGET_PACKAGE_DEPENDENCIES "Baz")
 
-   set(CPACK_NUGET_PACKAGE_DEPENDENCIES_Baz_VERSION "9.8.6")
 
-   # NB: Since "net6.0" was listed but no dependencies have been specified, an empty group
 
-   # will be added to the nuspec file for this framework. This can be used to address warning NU5128.
 
-   include(CPack)
 
- .. _nuget.org: https://www.nuget.org
 
- .. _version specification: https://learn.microsoft.com/en-us/nuget/concepts/package-versioning#version-ranges
 
- .. _SPDX license identifier: https://spdx.org/licenses
 
- .. _SPDX specification: https://spdx.github.io/spdx-spec/v2.3/SPDX-license-expressions
 
- .. _dependency group: https://learn.microsoft.com/en-us/nuget/reference/nuspec#dependency-groups
 
- .. _NU5128: https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu5128
 
- .. NuGet spec docs https://docs.microsoft.com/en-us/nuget/reference/nuspec
 
 
  |