CMP0128
Новое в версии 3.22.
Когда данная политика установлена в NEW:
-
<LANG>_EXTENSIONSинициализируется значениемCMAKE_<LANG>_EXTENSIONS, если оно задано, иначе по умолчанию используетсяCMAKE_<LANG>_EXTENSIONS_DEFAULT. - Расширения правильно включаются/отключаются, если
<LANG>_STANDARDне задано или соответствует значению по умолчанию. - Флаги, влияющие на режим, не добавляются, если это не требуется для достижения указанного режима.
Поведение OLD:
- Инициализирует
<LANG>_EXTENSIONSзначениемCMAKE_<LANG>_EXTENSIONS, если оно задано, иначе по умолчанию используетсяON. - Всегда добавляет флаг, если
<LANG>_STANDARDзадано и<LANG>_STANDARD_REQUIREDравноOFF. -
Если
<LANG>_STANDARDне задано:- Расширения не отключаются, даже если
<LANG>_EXTENSIONSравноOFF. - Не удается включить расширения, если
<LANG>_EXTENSIONSравноONза исключением компилятораIAR.
- Расширения не отключаются, даже если
Код может потребовать обновления для поведения NEW в следующих случаях:
-
Если флаг режима стандарта, ранее переопределенный CMake, и не использовался во время определения компилятора, теперь начинает действовать, поскольку CMake больше не добавляет его, так как обнаруженный компилятор соответствует по умолчанию.
Такой код следует преобразовать следующим образом:
- Использовать
<LANG>_STANDARDи<LANG>_EXTENSIONSвместо ручного добавления флагов. - Или убедиться, что при определении компилятора используются вручную указанные флаги.
- Использовать
-
Если расширения были отключены без задания
<LANG>_STANDARD, ранее CMake фактически не отключал расширения.Такой код следует обновить, чтобы не отключать расширения, если они необходимы.
-
Если расширения были включены/отключены, когда
<LANG>_STANDARDудовлетворялось по умолчанию компилятора, ранее CMake фактически не включал/отключал расширения.Такой код следует обновить, чтобы установить правильный режим расширений.
Если флаги компилятора, влияющие на режим стандарта, используются во время определения компилятора (например, в a toolchain file с использованием CMAKE_<LANG>_FLAGS_INIT), то они будут влиять на обнаруженное значение по умолчанию standard и extensions.
В отличие от многих политик, CMake версии 3.26.0-rc3 не выдает предупреждение, когда политика не задана, и просто использует поведение по умолчанию OLD. Используйте команду cmake_policy(), чтобы установить её явно в OLD или NEW. См. документацию переменной CMAKE_POLICY_WARNING_CMP0128 для управления предупреждением.
Примечание
Поведение по умолчанию OLD политики deprecated by definition и может быть удалено в будущей версии CMake.
© 2000–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/policy/CMP0128.html