Spec-Zone.ru › CMake 3.31

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.22. Он может быть задан с помощью cmake_policy() или cmake_minimum_required(). Если он не задан, CMake по умолчанию не выводит предупреждение и использует поведение OLD.

См. документацию переменной CMAKE_POLICY_WARNING_CMP0128 для управления предупреждением.

Примечание

Поведение OLD параметра deprecated by definition и может быть удалено в будущих версиях CMake.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.31/policy/CMP0128.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API