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_policy() или cmake_minimum_required(). Если она не установлена, CMake не выдает предупреждений и использует поведение OLD.
Примечание
Поведение 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/CMP0113.html