导航

  • 索引
  • 下一页 |
  • 上一页 |
  • CMake 4.1.0 »
  • 文档 »
  • cmake-properties(7) »
  • LINK_LIBRARY_OVERRIDE

LINK_LIBRARY_OVERRIDE¶

在 3.24 版本中添加。

重写与 LINK_LIBRARY 生成器表达式中的库关联的库特性。这可用于解决因在不同的 LINK_LIBRARY 生成器表达式中为同一库指定不同特性而导致的不兼容库特性。

此属性支持重写多个库和特性。它期望一个分号分隔的列表,其中每个列表项具有以下形式:

feature[,link-item]*

对于每个逗号分隔的 link-item,与其关联的任何现有库特性都将在此属性设置的目标上被忽略。该项将改为与指定的 feature 关联。每个 link-item 可以是 LINK_LIBRARY 生成器表达式中 library-list 的一部分的任何内容。

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 "feature2,lib1,external")

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

也可以使用预定义的 DEFAULT 库特性来覆盖任何特性。这实际上会丢弃该链接项在该目标上的任何特性(本例中的 lib3)

# When linking lib3, discard any library feature for lib1, and use feature2 for external
set_property(TARGET lib3 PROPERTY LINK_LIBRARY_OVERRIDE
  "DEFAULT,lib1"
  "feature2,external"
)

上面的示例还演示了如何为不同的链接项指定不同的特性覆盖。有关为单个库覆盖库特性的另一种方法,请参阅 LINK_LIBRARY_OVERRIDE_<LIBRARY> 目标属性,在某些情况下这可能更简单。如果两个属性都已定义并为同一链接项指定了覆盖,则 LINK_LIBRARY_OVERRIDE_<LIBRARY> 优先于 LINK_LIBRARY_OVERRIDE。

LINK_LIBRARY_OVERRIDE 的内容可以使用 生成器表达式。

有关库特性的更多信息,请参阅 CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE> 和 CMAKE_LINK_LIBRARY_USING_<FEATURE> 变量。

上一主题

LINK_LIBRARIES_STRATEGY

下一主题

LINK_LIBRARY_OVERRIDE_<LIBRARY>

本页

  • 显示源

快速搜索

导航

  • 索引
  • 下一页 |
  • 上一页 |
  • CMake 4.1.0 »
  • 文档 »
  • cmake-properties(7) »
  • LINK_LIBRARY_OVERRIDE
© 版权所有 2000-2025 Kitware, Inc. 和贡献者。使用 Sphinx 8.1.3 创建。