CPack NuGet 生成器

3.12 版本新增。

在生成 NuGet 包时,由于 NuGet 命令行选项缺乏相应的选项,无法直接控制输出文件名,因此没有 CPACK_NUGET_PACKAGE_FILE_NAME 变量。NuGet 根据其内置规则使用包名和版本来形成输出文件名。

另外,请注意,此生成器会忽略包含顶层目录(CPACK_INCLUDE_TOPLEVEL_DIRECTORY)。

CPack NuGet 生成器特有变量

CPack NuGet 生成器可用于使用 CPack 创建 NuGet 包。CPack NuGet 生成器是 CPack 生成器,因此它使用 CPack 使用的 CPACK_XXX 变量。

CPack NuGet 生成器具有由特定的 CPACK_NUGET_XXX 变量控制的特定功能。在“每组一个”模式下(参见 CPACK_COMPONENTS_GROUPING),以下变量中的 <compName> 占位符将包含一个组名(大写并转换为“C”标识符)。

CPack NuGet 生成器特定变量列表

CPACK_NUGET_COMPONENT_INSTALL

为 CPack NuGet 生成器启用组件打包

强制项:

默认值

关闭

CPACK_NUGET_PACKAGE_DEBUG

在执行 CPack NuGet 生成器时启用调试消息。

强制项:

默认值

关闭

CPACK_NUGET_SYMBOL_PACKAGE

在 4.1 版本中新增。

生成 NuGet 符号包(.snupkg)。

强制项:

默认值

关闭

必需元数据变量

CPACK_NUGET_PACKAGE_NAME
CPACK_NUGET_<compName>_PACKAGE_NAME

NuGet 包名称。 CPACK_NUGET_PACKAGE_NAME 用作 nuget.org 上的包 id

强制项:

默认值

CPACK_PACKAGE_NAME

CPACK_NUGET_PACKAGE_VERSION
CPACK_NUGET_<compName>_PACKAGE_VERSION

NuGet 包版本。

强制项:

默认值

CPACK_PACKAGE_VERSION

CPACK_NUGET_PACKAGE_DESCRIPTION
CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION

包的详细描述,用于 UI 显示。

强制项:

默认值
CPACK_NUGET_PACKAGE_AUTHORS
CPACK_NUGET_<compName>_PACKAGE_AUTHORS

包作者的逗号分隔列表,匹配 nuget.org 上的个人资料名称。这些信息将显示在 nuget.org 上的 NuGet Gallery 中,并用于按作者交叉引用包。

强制项:

默认值

CPACK_PACKAGE_VENDOR

可选元数据变量

CPACK_NUGET_PACKAGE_OWNERS
CPACK_NUGET_<compName>_PACKAGE_OWNERS

版本 3.30 已弃用: 请改用作者(CPACK_NUGET_PACKAGE_AUTHORS)。

包创建者的逗号分隔列表,使用 nuget.org 上的个人资料名称。这通常与作者列表相同,并在上传包到 nuget.org 时被忽略。

强制项:

默认值

CPACK_NUGET_PACKAGE_HOMEPAGE_URL
CPACK_NUGET_<compName>_PACKAGE_HOMEPAGE_URL

包主页的 URL,通常在 UI 显示和 nuget.org 上显示。

强制项:

默认值

CPACK_PACKAGE_HOMEPAGE_URL

CPACK_NUGET_PACKAGE_LICENSEURL
CPACK_NUGET_<compName>_PACKAGE_LICENSEURL

版本 3.20 已弃用: 请改用本地许可证文件(CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME)或 SPDX 许可证标识符CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION)。

包许可证的 URL,通常在 UI 显示和 nuget.org 上显示。

强制项:

默认值

支持:

NuGet 4.9.0 及更高版本

CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME
CPACK_NUGET_<compName>_PACKAGE_LICENSE_FILE_NAME

在 3.20 版本中添加。

包的许可证文件,格式为 .txt.md

如果指定了 CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME,则会忽略 CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION

强制项:

默认值

支持:

NuGet 4.9.0 及更高版本

CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION
CPACK_NUGET_<compName>_PACKAGE_LICENSE_EXPRESSION

在 3.20 版本中添加。

软件包数据交换 SPDX 许可证标识符,例如 MITBSD-3-ClauseLGPL-3.0-or-later。在选择许可证或更复杂的限制时,可以使用布尔运算符形成复合许可证表达式,例如 MIT OR BSD-3-Clause。有关如何形成复杂许可证表达式的指南,请参阅 SPDX 规范

如果指定了 CPACK_NUGET_PACKAGE_LICENSE_FILE_NAME,则会忽略 CPACK_NUGET_PACKAGE_LICENSE_EXPRESSION

强制项:

默认值

CPACK_NUGET_PACKAGE_ICONURL
CPACK_NUGET_<compName>_PACKAGE_ICONURL

版本 3.20 已弃用: 请改用本地图标文件(CPACK_NUGET_PACKAGE_ICON)。

用于在 UI 显示中作为包图标的 64x64 图像的 URL,具有透明背景。

强制项:

默认值

CPACK_NUGET_PACKAGE_ICON
CPACK_NUGET_<compName>_PACKAGE_ICON

在 3.20 版本中添加。

用于在 UI 显示中作为包图标的 64x64 图像的文件名,具有透明背景。

强制项:

默认值

支持:

NuGet 5.3.0 及更高版本

CPACK_NUGET_PACKAGE_README
CPACK_NUGET_<compName>_PACKAGE_README

3.30 版本新增。

包根目录相对于包的 readme 文件的路径。支持的文件格式仅包括 Markdown(*.md)。

强制项:

默认值

支持:

NuGet 5.10.0 preview 2 及更高版本

CPACK_NUGET_PACKAGE_REQUIRE_LICENSE_ACCEPTANCE

当设置为 true 值时,用户将在安装包之前被提示接受许可证。

强制项:

默认值

CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY
CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION_SUMMARY

版本 3.30 已弃用: 摘要正在被弃用。请改用描述(CPACK_NUGET_PACKAGE_DESCRIPTION)。

包的简短描述,用于 UI 显示。如果省略,则使用截断的描述。

强制项:

默认值

CPACK_PACKAGE_DESCRIPTION_SUMMARY

CPACK_NUGET_PACKAGE_RELEASE_NOTES
CPACK_NUGET_<compName>_PACKAGE_RELEASE_NOTES

此包版本所做的更改的描述,通常在 UI(如 Visual Studio 包管理器更新选项卡)中使用,而不是包描述。

强制项:

默认值

包的版权详细信息。

强制项:

默认值

CPACK_NUGET_PACKAGE_LANGUAGE
CPACK_NUGET_<compName>_PACKAGE_LANGUAGE

在 3.20 版本中添加。

包的区域设置指定符,例如 en_CA

强制项:

默认值

CPACK_NUGET_PACKAGE_TAGS
CPACK_NUGET_<compName>_PACKAGE_TAGS

描述包并帮助通过搜索和筛选发现包的标签和关键字的空格分隔列表。

强制项:

默认值

CPACK_NUGET_PACKAGE_REPOSITORY_URL
CPACK_NUGET_<compName>_REPOSITORY_URL

3.30 版本新增。

存储库元数据允许您将 *.nupkg 映射到构建它的存储库。这应该是一个公共 URL,版本控制软件可以直接调用它。它不应该是 HTML 页面,因为这是为计算机设计的。

强制项:

默认值

支持:

NuGet 4.0 及更高版本

CPACK_NUGET_PACKAGE_REPOSITORY_TYPE
CPACK_NUGET_<compName>_REPOSITORY_TYPE

3.30 版本新增。

VCS 存储库的类型。上传包到 nuget.org 时,类型限制为 100 个字符。

强制项:

是,如果指定了存储库 URL

默认值

支持:

NuGet 4.0 及更高版本

CPACK_NUGET_PACKAGE_REPOSITORY_BRANCH
CPACK_NUGET_<compName>_REPOSITORY_BRANCH

3.30 版本新增。

用于构建包的 VSC 分支名称。

强制项:

默认值

支持:

NuGet 4.6 及更高版本

CPACK_NUGET_PACKAGE_REPOSITORY_COMMIT
CPACK_NUGET_<compName>_REPOSITORY_COMMIT

3.30 版本新增。

用于构建包的提交的 SHA-1 哈希。

强制项:

默认值

支持:

NuGet 4.6 及更高版本

CPACK_NUGET_PACKAGE_TITLE
CPACK_NUGET_<compName>_PACKAGE_TITLE

包的人类可读标题,通常在 UI 显示(如 nuget.org 和 Visual Studio 的包管理器)中使用。如果未指定,则使用包 ID。

强制项:

默认值

依赖项规范

CPACK_NUGET_PACKAGE_DEPENDENCIES
CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES

一组默认的(非框架特定)包依赖项。

强制项:

默认值

CPACK_NUGET_PACKAGE_DEPENDENCIES_<dependency>_VERSION
CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<dependency>_VERSION

特定依赖项的 版本规范,其中 <dependency> 是依赖项列表中的一项(见上文)。

强制项:

默认值

CPACK_NUGET_PACKAGE_TFMS
CPACK_NUGET_<compName>_PACKAGE_TFMS

3.30 版本新增。

包的目标框架名称 (TFM) 列表,例如 "net47;netcoreapp21"。对于每个 TFM,将在 NuGet 包的依赖项块中生成一个 依赖项组。可以使用 TFM 依赖项列表(见下文)将框架特定依赖项添加到这些组中。

此变量对于修复警告 NU5128 特别有用。

强制项:

默认值

CPACK_NUGET_PACKAGE_DEPENDENCIES_<tfm>
CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<tfm>

3.30 版本新增。

适用于特定 <tfm> 框架的包依赖项列表,其中 <tfm> 是 TFM 列表中的一项(见上文)。

强制项:

默认值

CPACK_NUGET_PACKAGE_DEPENDENCIES_<tfm>_<dependency>_VERSION
CPACK_NUGET_<compName>_PACKAGE_DEPENDENCIES_<tfm>_<dependency>_VERSION

3.30 版本新增。

特定框架依赖项的 版本规范,其中 <dependency><tfm> 特定依赖项列表中的一项(见上文)。

强制项:

默认值

用法示例

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)