2016-11-23 66 views
0

我想用android studio的cmake編譯C++代碼,並且我有一個需要與目標鏈接的.so庫。如何使用CMakeLists.txt鏈接預編譯的.so文件

我是新來的CMake,這是我所:

add_library(
    my_target 
    SHARED 
    ${SRCS} 
) 

find_library(
    SSL 
    apex_fips_libs/libccmssl.so 
) 

target_link_libraries(
    my_target 
    ${SSL} 
) 

文件夾結構:

-- Src 
    -- some.cpp 
    -- some2.cpp 
    -- CMakeLists.txt 
    -- apex_fips_libs 
     --libccmssl.so 

但我得到以下錯誤:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND. 
Please set them or make sure they are set and tested correctly in the CMake files: 
    SSL 

我明白SSL未被設置爲find_library未找到.so , 但爲什麼?

我甚至嘗試過使用絕對路徑。有人能指出我這樣做的正確方法嗎?

謝謝。

+1

什麼是不明確?您顯然*使用*'SSL',但您無法定義/分配它。你認爲它的價值來自哪裏?稀薄的空氣? –

+0

@JesperJuhl感謝評論,我使用 - find_library( name1 [path1 path2 ...]),相信應該爲我設置SSL如果.so文件被發現..我誤解了嗎? https://cmake.org/cmake/help/v3.0/command/find_library.html –

+0

也許'find_library'根本找不到它.. –

回答

1

如果你保證有一個圖書館有已建成的話,或許這是最簡單的解決方案

target_link_libraries(my_target ${CMAKE_SOURCE_DIR}/apex_fips_libs/libccmssl.so) 

否則,你可能想嘗試更多的東西一樣

find_library(SSL NAMES ccmssl PATHS ${CMAKE_SOURCE_DIR}/apex_fips_libs) 
target_link_libraries(my_target ${SSL})