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_NAMEnuget.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

Deprecated since version 3.30: 自 3.30 版本起已棄用:請改用 authors (CPACK_NUGET_PACKAGE_AUTHORS)。

使用 nuget.org 上的個人資料名稱的套件建立者的逗號分隔清單。這通常與 authors 中的清單相同,並且在將套件上傳到 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

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 授權識別碼,例如 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

Deprecated since version 3.20: 自 3.20 版本起已棄用:請改用本機圖示檔案 (CPACK_NUGET_PACKAGE_ICON)。

用於 64x64 影像的 URL,該影像具有透明背景,可用作 UI 顯示中套件的圖示。

必須:

預設值:

CPACK_NUGET_PACKAGE_ICON
CPACK_NUGET_<compName>_PACKAGE_ICON

在版本 3.20 中新增。

用於 64x64 影像的檔案名稱,該影像具有透明背景,可用作 UI 顯示中套件的圖示。

必須:

預設值:

支援:

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

Deprecated since version 3.30: 自 3.30 版本起已棄用:摘要已棄用。請改用 description (CPACK_NUGET_PACKAGE_DESCRIPTION)。

用於 UI 顯示的套件簡短描述。如果省略,則使用截斷版本的描述。

必須:

預設值:

CPACK_PACKAGE_DESCRIPTION_SUMMARY

CPACK_NUGET_PACKAGE_RELEASE_NOTES
CPACK_NUGET_<compName>_PACKAGE_RELEASE_NOTES

此套件版本中所做變更的描述,通常在 UI 中使用,例如 Visual Studio Package Manager 的 Updates 索引標籤,以取代套件描述。

必須:

預設值:

套件的版權詳細資訊。

必須:

預設值:

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 中的 Package Manager 中。如果未指定,則使用套件 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 中新增。

套件的目標框架 Monikers (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)