我有一個C++庫項目,它附帶一個examples
文件夾。這些例子是獨立的,即它們可以在沒有源碼樹的其餘部分的情況下編譯,就好像它們是使用該庫的真實應用程序一樣。他們使用提供的FindMyLib.cmake
在系統中查找已安裝的庫。是否可以將cmake項目鏈接到子項目?
我想也能夠與整個圖書館一起構建它們。起初,我加入他們作爲子目錄:
if(MYLIB_BUILD_EXAMPLES)
add_subdirectory(examples/fooexample)
add_subdirectory(examples/barexample)
endif()
但是,這是行不通的,因爲我不能用find_package
安裝庫之前。我可以將默認構建目錄添加到搜索路徑中,但這還不夠,因爲在cmake運行時顯然沒有構建庫。
我能做些什麼來解決這個問題?有沒有一種方法可以在構建庫時透明地將庫鏈接到這些子項目(還可以「禁用」find_package,因爲它必然會在沒有安裝的情況下失敗)。
除非我錯過了什麼,這是不行的:爲例子的配置步驟會導致一個錯誤,因爲該庫將不會被尚未建成, – piwi
如果庫中添加(用'add_library(MyLib中)' )*之前*'add_subdirectory(examples/...)',然後'target_link_libraries(fooexample $ {MyLib_LIBRARY})'像往常一樣與** target **鏈接。圖書館目標不需要在這個階段建立。 – Tsyvarev
我的不好,謝謝澄清。 – piwi