2016-12-15 14 views
0

ndk-buildを使ってアンドロイドスタジオプロジェクトでネイティブコードとオープンcvを使用していますが、cmakeを使いたいと思います。 cmakelists.txtファイルでこれらの設定方法を教えてください。 これは、手遅れになる誰かがそれが役に立つかもしれませんどのようにcmakeのopencvをcmakelists.txtに追加します。

答えて

2

にこれらの事を設定する

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 

OpenCV_INSTALL_MODULES:=on 
OPENCV_CAMERA_MODULES:=off 
OPENCV_LIB_TYPE:=STATIC 

ifeq ("$(wildcard $(OPENCV_MK_PATH))","") 
include D:/OpenCV-3.1.0-android-sdk/sdk/native/jni/OpenCV.mk 
else 
include $(OPENCV_MK_PATH) 
endif 

LOCAL_MODULE := module_name 

LOCAL_CFLAGS := -DANDROID_NDK \ 
       -DDISABLE_IMPORTGL 

LOCAL_SRC_FILES := src/main/cpp/test.cpp 

LOCAL_LDLIBS += -lm -llog -ljnigraphics 
include $(BUILD_SHARED_LIBRARY) 

を提出私のAndroid.mkです。 最初にopencv 2用のlibopencv_java.soまたはoepncv3用のlibopencv_java3.soをapp/src/main/jniLibsフォルダーに別のアーキテクチャーの下に置きます.jniLibsフォルダーに対してlinonfree.soがある場合は追加します。 cmakeをgradleにリンクします。
ここにCmakeListsがあります。

cmake_minimum_required(VERSION 3.4.1) 
     set(EXECUTABLE_OUTPUT_PATH  "${CMAKE_CURRENT_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}") 
    add_library(# Sets the name of the library. 
       native-lib 

       # Sets the library as a shared library. 
       SHARED 

       # Provides a relative path to your source file(s). 
       src/main/cpp/native-lib.cpp) 
#the nonfree optional if you have build the nonfree.so of the xfeature2d module  
add_library(# Sets the name of the library 
      nonfree 
      # Sets the library as shared library. 
      SHARED 
      # indicate the library is prebuilt. 
      IMPORTED) 
set_target_properties(# Specifies the targeted library. 
         nonfree 
         # Specifies the parameter you want to define. 
          PROPERTIES IMPORTED_LOCATION 
         # Specifies the location of the library. 
         ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libnonfree.so) 
    include_directories(C:/Users/what/Documents/OpenCV-android-sdk/sdk/native/jni/include) 
    add_library(lib-opencv SHARED IMPORTED) 
    set_target_properties(lib-opencv PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so) 
    find_library(# Sets the name of the path variable. 
        log-lib 

        # Specifies the name of the NDK library that 
        # you want CMake to locate. 
        log) 
    target_link_libraries(# Specifies the target library. 
          native-lib 
          # prebuilt library nonfree. 
          nonfree 
          # prebuilt library opencv java. 
          lib-opencv 
          # Links the target library to the log library 
          # included in the NDK. 
          ${log-lib}) 

build.gradle(app)のjniLis.srcDirsフォルダパスを設定します。

sourceSets { 
    main { 
     // let gradle pack the shared library into apk 
     jniLibs.srcDirs = ['src/main/jniLibs'] 
    } 
    } 
関連する問題