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 для политики по определению считается устаревшим и может быть удалено в будущей версии CMake.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/policy/CMP0113.html