Spec-Zone.ru › CMake 3.22

CMP0113

Новое в версии 3.19.

Генераторы Makefile не повторяют пользовательские команды из зависимых целей.

Рассмотрим цепочку пользовательских команд, разделённых на две зависимые цели:

add_custom_command(OUTPUT output-not-created
  COMMAND ... DEPENDS ...)
set_property(SOURCE output-not-created PROPERTY SYMBOLIC 1)
add_custom_command(OUTPUT output-created
  COMMAND ... DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/output-not-created)
add_custom_target(first DEPENDS output-not-created)
add_custom_target(second DEPENDS output-created)
add_dependencies(second first)

В CMake 3.18 и ниже генераторы Makefile помещают копию обеих пользовательских команд в Makefile для цели second, даже если её зависимость от цели first гарантирует, что первая пользовательская команда выполняется до второй. Выполнение make second приведёт к тому, что первая пользовательская команда выполнится один раз в цели first и ещё раз в цели second.

CMake 3.19 и выше предпочитает не дублировать пользовательские команды в цели, которые уже сгенерированы в других зависимых от неё целях (прямо или косвенно). Этот принцип обеспечивает совместимость для проектов, которые не были обновлены для ожидания нового поведения. В частности, могут быть затронуты проекты, которые полагались на дублирование выполнения или не правильно устанавливали свойство файла источника SYMBOLIC.

Поведение OLD для этого принципа — дублировать пользовательские команды в зависимых целях. Поведение NEW принципа — не дублировать пользовательские команды в зависимых целях.

Этот принцип был введён в CMake версии 3.19. В отличие от многих принципов, CMake версии 3.22.6 не выводит предупреждение, если этот принцип не установлен, а просто использует поведение OLD.

Примечание

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

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

Spec-Zone.ru

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