CMP0157
Добавлена в версии 3.29.
Режим компиляции Swift выбирается абстракцией.
Компилятор Swift может компилировать модули в разных режимах. Желаемый режим сборки зависит от того, итеративный ли процесс разработки, когда разработчик хочет вносить изменения поэтапно, или же создаётся релиз для распространения, где требуются дополнительные оптимизации результирующего бинарника.
Версии CMake с 3.26 по 3.28 собирают бинарники Swift с включёнными оптимизациями целого модуля при конфигурации в не-отладочном типе сборки. Для версий CMake, предшествующих 3.26, разработчик должен вручную указать необходимый флаг для Генераторов Ninja, и не может указать оптимизацию целого модуля для Xcode генератора.
Версии CMake 3.29 и выше предпочитают устанавливать режим компиляции с помощью свойства целевого объекта Swift_COMPILATION_MODE, которое может быть инициализировано переменной CMAKE_Swift_COMPILATION_MODE.
Эта политика обеспечивает совместимость для проектов, которые не были обновлены. Настройка политики вступает в силу с первого использования команды project() или enable_language(), которая включает язык Swift.
Примечание
После того, как политика вступила в силу в верхней части проекта, этот выбор должен быть использован на всем дереве. В проектах, имеющих вложенные проекты в подкаталогах, убедитесь, что вы конвертировали все вместе.
Поведение OLD для этой политики собирает все целевые объекты Swift в режиме wholemodule для конфигураций без отладки. Генераторы Ninja добавляют флаг -wmo к набору стандартных флагов Swift. Генератор Xcode устанавливает атрибут SWIFT_COMPILATION_MODE в значение wholemodule в генерируемом файле проекта Xcode.
Поведение NEW для этой политики заключается в применении режима компиляции, указанного в свойстве целевого объекта Swift_COMPILATION_MODE, инициализированном при создании каждого целевого объекта переменной CMAKE_Swift_COMPILATION_MODE.
Эта политика была представлена в версии CMake 3.29. Она может быть установлена с помощью cmake_policy() или cmake_minimum_required(). Если она не установлена, CMake не выдаёт предупреждение и использует поведение OLD.
Примечание
Поведение OLD этой политики deprecated by definition и может быть удалено в будущих версиях CMake.
© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0157.html