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 要求專案設定任一變數,否則會引發嚴重錯誤。然而,專案可能需要額外指定 CPU 功能,例如使用 -mcpu=cortex-m33+nodsp
,這與 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 的未來版本中移除。