LINK_LIBRARY_OVERRIDE_<LIBRARY> — CMake 3.31.2 Documentation

# LINK_LIBRARY_OVERRIDE_<LIBRARY>

Added 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.