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¶
自 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_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 授權識別符,例如
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¶
自 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¶
當設定為真值時,使用者在安裝套件之前會被提示接受授權。
- 必要:
否
- 預設:
無
- CPACK_NUGET_PACKAGE_DESCRIPTION_SUMMARY¶
- CPACK_NUGET_<compName>_PACKAGE_DESCRIPTION_SUMMARY¶
自 3.30 版本起已棄用:摘要已棄用。請改用描述 (
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 版本中新增。
套件的目標架構 Moniker (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)