我想以靜態方式構建一個庫,並將其集成到一起(將它的所有依賴項)集成到我的項目中。目標平臺(從長遠來看)是android。目前我只想測試我的Linux(debian 64位)虛擬機在Windows主機上的整個過程。所得到的項目結構應該是這樣的cmake:如何告訴庫哪裏可以找到依賴關係
project/
|
|----- thirdparty/
| |
| |----- lib1/ (depends on 2 and 3)
| |----- lib2/
| ----- lib3/
----- application/
LIB1是我在應用程序中使用的庫。所有庫都已經爲我的當前目標系統構建。我使用了隨庫一起提供的configure
腳本。由於lib1需要lib2和lib3,所以我通過使用with-lib2-prefix=<pathof-lib2>
來引用它們。我用它來建立與QtCreator鏈接應用CMake的腳本LIB1是這樣的:
ADD_LIBRARY(lib1 STATIC IMPORTED)
SET(lib1_path ${CMAKE_SOURCE_DIR}/thirdparty/lib1/lib1.a)
# and give path to external library with IMPORTED_LOCATION
SET_TARGET_PROPERTIES(gpgme PROPERTIES IMPORTED_LOCATION ${lib1_path})
//later...
target_link_libraries( ${COMPONENT_NAME}
lib1
)
LIB1如預期被發現,但你也許已經懷疑的依賴不會被發現。的確,我從來沒有告訴cmake如何。但是因爲我對cmake很陌生,所以我不知道這是如何完成的。
要麼我想告訴lib1在哪裏找到與cmake的lib2和lib3。或者,如果在不觸及lib1的「構建過程」的情況下這是不可能的,也許我可以設法以正確的方式從cmake調用./configure
。有沒有人有類似的問題,可以給我一個建議如何使這項工作?
這是否幫助https://cmake.org/cmake/help/v3.0/command/link_directories.html: link_directories($ {} CMAKE_SOURCE_DIR /第三方/ LIB2) – 2016-02-12 16:17:42
我試圖ADD_LIBRARY之前加入這一行(第二次嘗試)直接在target_link_libraries之前。可悲的是,它沒有奏效。我遇到了同樣的錯誤,說「undefine reference」 –