Spec-Zone.ru › CMake

OPTIMIZE_DEPENDENCIES

Добавлено в версии 3.19.

Включает оптимизацию зависимостей статических библиотек и библиотек объектов.

Если этому свойству задано значение true, некоторые зависимости статической библиотеки или библиотеки объектов могут быть удалены во время генерации, если они не нужны для сборки библиотеки, поскольку статические библиотеки и библиотеки объектов фактически ни с чем не связываются.

Если для статической библиотеки или библиотеки объектов включена оптимизация зависимостей, сначала из неё удаляются все зависимости. Затем проверяются все прямые и косвенные зависимости, которые у неё были изначально, и те из них, которые соответствуют одному из следующих критериев, добавляются обратно:

  • Зависимость была добавлена в библиотеку с помощью add_dependencies().
  • Зависимость была добавлена в библиотеку через исходный файл библиотеки, сгенерированный пользовательской командой, использующей эту зависимость.
  • С зависимостью связана хотя бы одна пользовательская команда PRE_BUILD, PRE_LINK или POST_BUILD.
  • Зависимость содержит исходные файлы, сгенерированные пользовательской командой. Однако, если для зависимости задано NEW в CMP0154 и она использует Наборы файлов, учитываются только исходные файлы, область видимости которых задана как PUBLIC, INTERFACE или тип которых — CXX_MODULES.
  • Зависимость содержит языки, создающие побочные эффекты, значимые для библиотеки. В настоящее время считается, что побочные эффекты создают все языки, кроме C, C++, Objective-C, Objective-C++, ассемблера и CUDA. Однако предполагается, что побочные эффекты одного языка не имеют значения для другого (например, предполагается, что библиотека Fortran не создаёт побочных эффектов, значимых для библиотеки Swift).

Например, предположим, что у вас есть статическая библиотека Fortran, зависящая от статической библиотеки C, которая, в свою очередь, зависит от статической библиотеки Fortran. Для библиотеки Fortran верхнего уровня включена оптимизация, а для промежуточной библиотеки C — нет. При сборке библиотеки Fortran верхнего уровня будет также собрана нижняя библиотека Fortran, но не промежуточная библиотека C, поскольку библиотека C не создаёт побочных эффектов, значимых для библиотеки Fortran. Однако при сборке промежуточной библиотеки C будет также собрана нижняя библиотека Fortran, несмотря на то что она не создаёт побочных эффектов, значимых для библиотеки C, поскольку для библиотеки C оптимизация не включена.

При создании цели это свойство инициализируется значением переменной CMAKE_OPTIMIZE_DEPENDENCIES.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_tgt/OPTIMIZE_DEPENDENCIES.html

Spec-Zone.ru

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