通過CMake的鏈接目錄說我有以下結構(簡化)C項目:當編譯共享庫
|- CMakeLists.txt <- This is root CMake
|- lib
|- <some source files>
|- CMakeLists.txt <- CMake file for building the library
|- demo
|- <some source files>
|- CMakeLists.txt <- CMake for building demo apps
|- extra_lib
|- <some source files>
|- CMakeLists.txt <- CMake for building supplementary library
現在,我要建立我的圖書館(住在lib
)作爲共享庫由demo
目錄中的演示應用程序使用。
附加庫不能作爲我的庫的一部分(它本質上是一些C++外部庫的包裝)也被編譯爲共享庫,然後鏈接到我的庫。
我在爲其他庫添加依賴關係時遇到問題。在我的CMakeLists.txt
中,我已經定義了link_directories
指向存儲.so
庫的指向位置,然後指定了要鏈接的指向target_link_libraries
的位置。最後我做了出口目標。
include_directories(${EXTERNAL_DIR}/include)
link_directories(${EXTERNAL_DIR}/lib)
add_library(extra_lib SHARED extra_lib.cpp)
target_link_libraries(extra_lib
some_lib
)
export(TARGETS extra_lib FILE extra_lib.cmake)
的一點是,當我嘗試編譯lib
,並將其鏈接對extra_lib
我得到some_lib
沒有找到我猜的錯誤意味着link_directories
是本地extra_lib
。
現在,問題是如何使它與依賴關係一起傳播?我希望它的工作方式是將extra_lib
作爲子目錄添加,並且作爲我的lib的依賴項將自動將鏈接目錄從extra_lib
添加到lib
鏈接過程。
鏈接過程將如下所示:
(一些外部庫) - > extra_lib - > LIB - >演示應用程序
就像一個魅力!謝謝! – kaolpr