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 编译和链接标志。相反,项目必须明确指定它们。此策略为尚未更新的项目提供兼容性。

此策略的“旧”行为要求使用“ARMClang”的项目设置 :variable:“CMAKE_SYSTEM_PROCESSOR”或“CMAKE_SYSTEM_ARCH”,它会自动添加编译选项“-mcpu=”或“ -march=` 和基于这些变量的链接选项 --cpu=NEW 行为不添加编译或链接选项,项目负责设置正确的选项。

此策略是在 CMake 版本 3.21 中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLDNEW

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。