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