2017-05-17 14 views
0

CMakeがライブラリを見つけられず、理由がわかりません。あるCMakeの出力のCMake find_libraryがライブラリを見つけることに失敗しています

set(SODIUM_DIR ${PROJECT_SOURCE_DIR}/../../../deps/install/libsodium/android-${ANDROID_ABI}/lib) 
message(STATUS SODIUM_DIR=${SODIUM_DIR}) 
find_library(sodium-lib 
      libsodium.a 
      PATHS ${SODIUM_DIR} 
      NO_DEFAULT_PATH) 

パート:SODIUM_DIRライブラリが存在することを示している上、「LS」を実行

-- SODIUM_DIR=/Users/csimmons/Documents/repos/onedoclily/client/Android/app/../../../deps/install/libsodium/android-armeabi-v7a/lib 
CMake Error: The following variables are used in this project, but they are set to NOTFOUND. 
-- Configuring incomplete, errors occurred! 
Please set them or make sure they are set and tested correctly in the CMake files: 
See also "/Users/csimmons/Documents/repos/onedoclily/client/Android/app/.externalNativeBuild/cmake/debug/armeabi-v7a/CMakeFiles/CMakeOutput.log". 
sodium-lib 
    linked by target "native-lib" in directory /Users/csimmons/Documents/repos/onedoclily/client/Android/app 
Build command failed. 

これは、ライブラリを見つけることになっている私のCMakeLists.txtの一部です:

$ ls /Users/csimmons/Documents/repos/onedoclily/client/Android/app/../../../deps/install/libsodium/android-armeabi-v7a/lib 
libsodium.a libsodium.la libsodium.so pkgconfig 
+1

ライブラリのアーキテクチャとは何ですか? (ヒント: 'file libsodium.a')。あなたのホストのアーキテクチャは何ですか?クロスコンパイルしていますか? 'foo'プラットフォーム用にコンパイルしようとしていても、ライブラリが' bar'プラットフォーム用にビルドされている場合、ライブラリが正しいパスに入っていても、このエラーは本当に起こります。 – thiagowfx

+0

これにリンクするライブラリとバイナリは、どちらもAndroidとarmeabi-v7a向けにビルドされています。 –

答えて

0

を参照してください。

set(SODIUM_PATH ${PROJECT_SOURCE_DIR}/../../../deps/install/libsodium/android-${ANDROID_ABI}/lib/libsodium.a) 
add_library(sodium-lib STATIC IMPORTED) 
set_property(TARGET sodium-lib PROPERTY IMPORTED_LOCATION ${SODIUM_PATH}) 
target_link_libraries(# My code's library. 
         native-lib 
         sodium-lib 
         ) 
0

可能な名前のリストの前にタグNAMESがありません。固定

find_library(sodium-lib 
     NAMES libsodium.a 
     PATHS ${SODIUM_DIR} 
     NO_DEFAULT_PATH) 

は私が代わりにfind_libraryのadd_libraryとSET_PROPERTYを使用して問題を解決することができましたことを信じてHow can I find a library name of .so file?

+1

* NAMES *はエラーではありません:*単一の名前を検索すると、* NAMES *は省略できます。 [documentation](https://cmake.org/cmake/help/v3.7/command/find_library.html)を参照してください。 – Tsyvarev

関連する問題