CPack NuGet 生成器¶
在 3.12 版本中添加。
当构建 NuGet 包时,由于 NuGet 缺少相应的 CLI 选项,因此没有直接的方法来控制输出文件名,因此没有 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_PACKAGE_NAME¶
- CPACK_NUGET_<compName>_PACKAGE_NAME¶
NUGET 包名称。
CPACK_NUGET_PACKAGE_NAME
用作 nuget.org 上的包id
- 强制性:
是
- 默认:
- CPACK_NUGET_PACKAGE_DESCRIPTION¶
- CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION¶
包的详细描述,用于 UI 显示。
- 强制性:
是
- 默认:
CPACK_COMPONENT_GROUP_<groupName>_DESCRIPTION
,
可选的元数据变量¶
- CPACK_NUGET_PACKAGE_OWNERS¶
- CPACK_NUGET_<compName>_PACKAGE_OWNERS¶
Deprecated since version 3.30: 自 3.30 版本起已弃用:请改用 authors (
CPACK_NUGET_PACKAGE_AUTHORS
)。使用 nuget.org 上的个人资料名称的包创建者的逗号分隔列表。 这通常与作者列表相同,并且在将包上传到 nuget.org 时会被忽略。
- 强制性:
否
- 默认:
无
- CPACK_NUGET_PACKAGE_HOMEPAGE_URL¶
- CPACK_NUGET_<compName>_PACKAGE_HOMEPAGE_URL¶
包主页的 URL,通常在 UI 显示以及 nuget.org 上显示。
- 强制性:
否
- 默认:
- CPACK_NUGET_PACKAGE_LICENSEURL¶
- CPACK_NUGET_<compName>_PACKAGE_LICENSEURL¶
Deprecated since version 3.20: 自 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 许可证标识符,例如
MIT
、BSD-3-Clause
或LGPL-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¶
Deprecated since version 3.20: 自 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 版本中添加。
相对于包根目录的包路径,指向自述文件。 支持的文件格式仅包括 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¶
Deprecated since version 3.30: 自 3.30 版本起已弃用:摘要正在弃用。 请改用 description (
CPACK_NUGET_PACKAGE_DESCRIPTION
)。包的简短描述,用于 UI 显示。 如果省略,则使用描述的截断版本。
- 强制性:
否
- 默认:
- 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_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 版本中添加。
包的目标框架 Monikers (TFM) 列表,例如“net47;netcoreapp21”。 对于每个 TFM,将在 NuGet 包的依赖项块中生成一个 依赖项组。 框架特定的依赖项可以使用 TFM 依赖项列表(见下文)添加到这些组中。
此变量对于修复警告 NU5128 特别有用。
- 强制性:
否
- 默认:
无
使用示例¶
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)