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