LINK_LIBRARY_OVERRIDE_<LIBRARY>¶
在版本 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>
的内容可以使用 生成器 表达式
。
有关库特性的更多信息,请参阅 CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>
和 CMAKE_LINK_LIBRARY_USING_<FEATURE>
变量。