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 版本中删除。