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_PROCESSOR
或 CMAKE_SYSTEM_ARCH
,並且它會根據這些變數自動新增編譯選項 -mcpu=
或 -march=
和連結選項 --cpu=
。 NEW
行為則不會新增編譯或連結選項,專案有責任設定正確的選項。
此政策在 CMake 版本 3.21 中引入。它可以使用 cmake_policy()
或 cmake_minimum_required()
來設定。如果未設定,CMake 會發出警告,並使用 OLD
行為。
注意
政策的 OLD
行為是 依定義為已棄用
,並可能在未來的 CMake 版本中移除。