CMake的find_package
文件說:通過提供變量和進口由封裝本身記載目標在CMake中,如何在調用find_package後找到導入的目標?
當包發現包特有的信息。
如果我有一個圖書館,ABCD
我可以開始使用find_package
,提供的CMake可以找到一個合適的ABCDConfig.cmake
文件。然後它創建如上所述的導入目標(例如abcd10 abcdExtra
)。
然後,我可以編譯和對這些庫的鏈接,像這樣:
target_include_directories(mytarget abcd10 abcdExtra)
target_link_libraries(mytarget abcd10 abcdExtra)
的問題是,這取決於怎麼說ABCDConfig.cmake
文件,別人寫的內容,該目標的名稱可能是幾乎任何東西(例如abcdlib
,abcdX64
,Foobar
,...),即使它可能是完全相同的庫ABCD
!
我已閱讀了大部分文檔,但看不到任何獲取導入目標的方法,因此看起來我必須知道所有常用導入目標名稱是什麼,並單獨檢查它們。這對我來說似乎有點不合理。我在這裏錯過了什麼嗎?如何在不知道這些細節的情況下,加載並鏈接由不同軟件包管理器(甚至是自己編寫文件的人)生成的庫?