Spec-Zone.ru › CMake 3.29

LINK_LIBRARY_OVERRIDE_

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

Переопределяет функцию библиотеки, связанную с <LIBRARY> из LINK_LIBRARY выражений генератора. Это может быть использовано для разрешения несовместимых функций библиотеки, которые возникают из-за указания различных функций для <LIBRARY> в разных LINK_LIBRARY выражениях генератора.

При установке на целевой объект, это свойство содержит имя одной функции библиотеки, которая будет применена к <LIBRARY> при компоновке этого целевого объекта.

add_library(lib1 ...)
add_library(lib2 ...)
add_library(lib3 ...)

target_link_libraries(lib1 PUBLIC "$<LINK_LIBRARY:feature1,external>")
target_link_libraries(lib2 PUBLIC "$<LINK_LIBRARY:feature2,lib1>")
target_link_libraries(lib3 PRIVATE lib1 lib2)

# lib1 is associated with both feature2 and no feature. Without any override,
# this would result in a fatal error at generation time for lib3.
# Define an override to resolve the incompatible feature associations.
set_property(TARGET lib3 PROPERTY LINK_LIBRARY_OVERRIDE_lib1 feature2)

# lib1 will now be associated with feature2 instead when linking lib3

Также возможно переопределить любую функцию с помощью предварительно определённой DEFAULT функции библиотеки. Это эффективно отбрасывает любую функцию для этого элемента компоновки, только для этого целевого объекта (lib3 в этом примере):

# When linking lib3, discard any library feature for lib1
set_property(TARGET lib3 PROPERTY LINK_LIBRARY_OVERRIDE_lib1 DEFAULT)

См. свойство целевого объекта LINK_LIBRARY_OVERRIDE для альтернативного способа переопределения функций библиотек для нескольких библиотек сразу. Если оба свойства определены и указывают на переопределение для одного и того же элемента компоновки, LINK_LIBRARY_OVERRIDE_<LIBRARY> имеет приоритет над LINK_LIBRARY_OVERRIDE.

Содержимое LINK_LIBRARY_OVERRIDE_<LIBRARY> может использовать generator expressions.

Для получения дополнительной информации о функциях библиотек, обратитесь к переменным CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE> и CMAKE_LINK_LIBRARY_USING_<FEATURE>.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/prop_tgt/LINK_LIBRARY_OVERRIDE_LIBRARY.html

Spec-Zone.ru

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