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_PROCESSORCMAKE_SYSTEM_ARCH,並且它會根據這些變數自動加入編譯選項 -mcpu=-march= 以及連結選項 --cpu=NEW 行為不會加入編譯或連結選項,專案負責設定正確的選項。

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

注意

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