LINK_LIBRARY_OVERRIDE_<LIBRARY>¶
於版本 3.24 加入。
覆寫與來自 LINK_LIBRARY
產生器運算式之 <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>
變數。