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