Spec-Zone.ru › CMake 3.31

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.31/prop_tgt/OPTIMIZE_DEPENDENCIES.html

Spec-Zone.ru

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