Spec-Zone.ru › CMake 3.29

OPTIMIZE_DEPENDENCIES

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

Активирует оптимизацию зависимостей статических и объектных библиотек.

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

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

  • Зависимость была добавлена в библиотеку с помощью add_dependencies().
  • Зависимость была добавлена в библиотеку через файл исходного кода в библиотеке, сгенерированный пользовательской командой, использующей эту зависимость.
  • Зависимость имеет любые PRE_BUILD, PRE_LINK, или POST_BUILD пользовательские команды, связанные с ней.
  • Зависимость содержит любые файлы исходного кода, сгенерированные пользовательской командой.
  • Зависимость содержит любые языки, которые производят побочные эффекты, имеющие отношение к библиотеке. В настоящее время предполагается, что все языки, кроме 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–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/prop_tgt/OPTIMIZE_DEPENDENCIES.html

Spec-Zone.ru

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