LINK_LIBRARY_OVERRIDE_<LIBRARY>ΒΆ
New in version 3.24.
Override the library feature associated with <LIBRARY>
from
LINK_LIBRARY
generator expressions. This can be used to resolve
incompatible library features that result from specifying different features
for <LIBRARY>
in different LINK_LIBRARY
generator expressions.
When set on a target, this property holds a single library feature name, which
will be applied to <LIBRARY>
when linking that target.
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
It is also possible to override any feature with the pre-defined DEFAULT
library feature. This effectively discards any feature for that link item,
for that target only (lib3
in this example):
# When linking lib3, discard any library feature for lib1
set_property(TARGET lib3 PROPERTY LINK_LIBRARY_OVERRIDE_lib1 DEFAULT)
See the LINK_LIBRARY_OVERRIDE
target property for an alternative
way of overriding library features for multiple libraries at once. If both
properties are defined and specify an override for the same link item,
LINK_LIBRARY_OVERRIDE_<LIBRARY>
takes precedence over
LINK_LIBRARY_OVERRIDE
.
Contents of LINK_LIBRARY_OVERRIDE_<LIBRARY>
may use
generator expressions
.
For more information about library features, see the
CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>
and
CMAKE_LINK_LIBRARY_USING_<FEATURE>
variables.