CMP0116
Новое в версии 3.20.
Генераторы Ninja преобразуют DEPFILE из add_custom_command().
В CMake 3.19 и ниже файлы, заданные аргументу DEPFILE команды add_custom_command(), передавались напрямую в переменную Ninja depfile без разрешения путей. Это означало, что если команда add_custom_command() вызывалась из подкаталога (созданного с помощью add_subdirectory()), аргумент DEPFILE должен был быть либо абсолютным путём, либо путём, относительным к CMAKE_BINARY_DIR, а не к CMAKE_CURRENT_BINARY_DIR. Кроме того, преобразование не производилось для файлов, перечисленных в DEPFILE, что означало, что пути внутри DEPFILE имели те же ограничения.
Начиная с CMake 3.20, аргумент DEPFILE относительный к CMAKE_CURRENT_BINARY_DIR (если он не является абсолютным), и пути в DEPFILE также относительны к CMAKE_CURRENT_BINARY_DIR. CMake автоматически преобразует пути в DEPFILE (если они не абсолютные) после выполнения пользовательской команды. Файл, перечисленный в DEPFILE, не изменяется никоим образом. Вместо этого CMake записывает преобразование в собственный внутренний файл и передает этот внутренний файл в переменную Ninja depfile. Это преобразование происходит независимо от того, является ли DEPFILE относительным и независимо от того, вызывается ли add_custom_command() из подкаталога.
Поведение OLD для этой политики — передать DEPFILE в Ninja без изменений. Поведение NEW для этой политики — преобразовать DEPFILE после выполнения пользовательской команды. Статус CMP0116 регистрируется во время создания пользовательской команды, и вы можете иметь пользовательские команды в одном каталоге с различными значениями для CMP0116 путём установки политики перед каждой пользовательской командой.
Эта политика была введена в CMake версии 3.20. В отличие от большинства политик, CMake версии 3.24.2 по умолчанию не предупреждает, если эта политика не установлена (если DEPFILE используется в подкаталоге) и просто использует поведение OLD. См. документацию переменной CMAKE_POLICY_WARNING_CMP0116 для управления предупреждением.
© 2000–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.24/policy/CMP0116.html