LINK_LIBRARY_OVERRIDE_<LIBRARY>¶
在版本 3.24 中加入。
覆寫與 <LIBRARY>
關聯的程式庫特性,其來自於 LINK_LIBRARY
產生器表達式。這可以用於解決因在不同的 LINK_LIBRARY
產生器表達式中為 <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>
變數。