CMP0123
Добавлено в версии 3.21.
ARMClang Флаги компиляции и компоновки для ЦП/архитектуры должны задаваться явно.
В CMake 3.20 и более ранних версиях переменная CMAKE_SYSTEM_PROCESSOR и недокументированный CMAKE_SYSTEM_ARCH автоматически преобразуются в параметры компиляции и компоновки для ARMClang. Например, флаг -mcpu=cortex-m33 добавляется, если CMAKE_SYSTEM_PROCESSOR равен cortex-m33. CMake требует, чтобы проекты задавали одну из этих переменных, иначе возникает критическая ошибка. Однако проекту может понадобиться дополнительно указать возможности ЦП, например с помощью -mcpu=cortex-m33+nodsp, что приводит к конфликту с -mcpu=cortex-m33, добавленным CMake. Это приводит к ошибкам компоновки или к созданию непригодных для использования бинарных файлов.
В CMake 3.21 и более поздних версиях вместо этого предпочтительно автоматически не добавлять флаги компиляции и компоновки для ЦП/архитектуры. Вместо этого проекты должны задавать их явно. Эта политика обеспечивает совместимость с проектами, которые ещё не были обновлены.
Поведение OLD этой политики требует, чтобы проекты, использующие ARMClang, задавали либо CMAKE_SYSTEM_PROCESSOR, либо CMAKE_SYSTEM_ARCH, и автоматически добавляет параметр компиляции -mcpu= или -march= и параметр компоновки --cpu= на основе этих переменных. Поведение NEW не добавляет параметры компиляции или компоновки, и проекты должны самостоятельно задавать правильные параметры.
Эта политика появилась в CMake версии 3.21. Её можно установить с помощью cmake_policy() или cmake_minimum_required(). Если она не установлена, CMake выдаёт предупреждение и использует поведение OLD.
Примечание
Поведение OLD политики по определению является устаревшим и может быть удалено в будущей версии CMake.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0123.html