CMP0127
Добавлено в версии 3.22.
cmake_dependent_option() поддерживает полный Синтаксис условий.
Параметр <condition> принимает список условий, разделённых точкой с запятой. CMake 3.21 и более ранние версии вычисляют каждое condition как if(${condition}), что некорректно обрабатывает условия со вложенными группами скобок. CMake 3.22 и более поздние версии вместо этого предпочитают вычислять каждое condition как if(<condition>), где <condition> повторно разбирается так, как если бы оно было буквально записано в вызове if(). Это позволяет использовать такие выражения, как:
"A AND (B OR C)"
но требует переписать выражения, подобные следующим:
"FOO MATCHES (UPPER|lower)"
в такой вид:
"FOO MATCHES \"(UPPER|lower)\""
Политика CMP0127 обеспечивает совместимость с проектами, которые ещё не были обновлены с учётом нового поведения.
Эта политика была введена в CMake версии 3.22. Её можно установить с помощью 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/CMP0127.html