CMP0123

在版本 3.21 中新增。

ARMClang cpu/arch 編譯和連結標誌必須明確設定。

CMake 3.20 及更低版本會自動將 CMAKE_SYSTEM_PROCESSOR 變數和一個未記載的 CMAKE_SYSTEM_ARCH 變數對應到 ARMClang 的編譯和連結選項。例如,當 CMAKE_SYSTEM_PROCESSOR 等於 cortex-m33 時,會新增 -mcpu=cortex-m33 標誌。CMake 要求專案設定其中一個變數,否則會引發嚴重錯誤。然而,專案可能需要額外使用例如 -mcpu=cortex-m33+nodsp 來指定 CPU 功能,這與 CMake 新增的 -mcpu=cortex-m33 衝突。這會導致連結錯誤或產生無法使用的二進位檔。

CMake 3.21 及以上版本傾向於不自動新增任何 cpu/arch 編譯和連結標誌。相反地,專案必須明確地指定它們。此政策為尚未更新的專案提供相容性。

此政策的 OLD 行為要求使用 ARMClang 的專案設定 CMAKE_SYSTEM_PROCESSORCMAKE_SYSTEM_ARCH,並且它會根據這些變數自動新增編譯選項 -mcpu=-march= 和連結選項 --cpu=NEW 行為則不會新增編譯或連結選項,專案有責任設定正確的選項。

此政策在 CMake 版本 3.21 中引入。它可以使用 cmake_policy()cmake_minimum_required() 來設定。如果未設定,CMake 會發出警告,並使用 OLD 行為。

注意

政策的 OLD 行為是 依定義為已棄用,並可能在未來的 CMake 版本中移除。