CMake 3.28 發行說明

自 CMake 3.27 以來所做的變更包括以下內容。

新功能

語言

  • Ninja 產生器Visual Studio 產生器 現在支援 C++ 20 具名模組,適用於 VS 2022 及更新版本,並結合 MSVC 14.34 工具組(VS 17.4 隨附)及更新版本、LLVM/Clang 16.0 及更新版本,以及 GCC 14(在 2023-09-20 daily bump 之後)及更新版本。詳情請參閱 cmake-cxxmodules(7)

  • HIP 語言程式碼現在可以使用 NVIDIA CUDA 編譯器 (NVCC) 針對 NVIDIA GPU 進行編譯。請參閱 CMAKE_HIP_PLATFORM 變數。

平台

預設集

  • cmake-presets(7) 檔案現在支援結構描述版本 8。它新增了對 $schema 欄位的支援。

編譯器

  • 現在透過 compiler id CrayClang 支援 Cray Clang 架構的編譯器。

  • 現在透過 compiler id OrangeC 支援 OrangeC 編譯器。

命令

變數

屬性

  • 在匯入的共用程式庫上,IMPORTED_IMPLIB 目標屬性現在可以在沒有 IMPORTED_LOCATION 的情況下使用。這可用於表示 Stub 程式庫,其位置不應作為執行階段搜尋路徑新增至連結它的相依項。

  • macOS Framework 的 IMPORTED_LOCATION 屬性現在可以是 .framework 資料夾本身的路徑。

  • 新增了 XCODE_EMBED_RESOURCES 目標屬性,以告知 Xcode 產生器要將哪些目標放入 Embed Resources 建置階段。

模組

產生器運算式

CTest

已棄用和移除的功能

其他變更

  • 在使用 檔案集 的目標中,產生的檔案現在預設為私有。產生的公開標頭必須使用檔案集指定。這讓 Ninja 產生器 可以產生更有效率的建置圖。請參閱政策 CMP0154

  • find_library()find_path()find_file() 命令不再在衍生自 PATH 環境變數的安裝前置路徑中搜尋。此行為已在 CMake 3.3 中新增,以支援 Windows 上的 MSYS 和 MinGW (MSYSTEM) 開發環境,但它可能會搜尋到碰巧因為不相關原因而位於 PATH 中的非預期前置路徑。僅為了工具而將某些 <prefix>/bin 目錄保留在 PATH 中的使用者,不一定希望搜尋任何對應的 <prefix>/lib<prefix>/include 目錄。此行為已在 CMake 3.6 中還原為非 Windows 平台。現在它也已在 Windows 平台上還原。

    可以將 CMAKE_PREFIX_PATH 環境變數設定為要搜尋的前置路徑的 分號分隔清單

  • 在 Windows 上的 MSYSTEM 環境中使用 MinGW 工具時,$MSYSTEM_PREFIX/local$MSYSTEM_PREFIX 前置路徑現在會新增至 CMAKE_SYSTEM_PREFIX_PATH

  • cmake.org 上提供的預先編譯 Linux x86_64 二進位檔現在需要 GLIBC 2.17 或更高版本。

更新

自 CMake 3.28.0 以來所做的變更包括以下內容。

3.28.1、3.28.2、3.28.3

  • 這些版本未對已記錄的功能或介面進行任何變更。進行了一些實作更新,以支援生態系統變更和/或修復回歸。

3.28.4

  • Apple visionOS 支援已針對 xrosxrsimulator SDK 的正式 Xcode 15.2 版本進行更新。

3.28.5

  • 此版本未對已記錄的功能或介面進行任何變更。針對 C++ 模組支援進行了一些實作更新。

3.28.6

  • 此版本未對已記錄的功能或介面進行任何變更。進行了一些實作更新,以支援生態系統變更和/或修復回歸。