我正在使用本机代码并通过使用ndk-build在android studio项目中打开cv,但我想使用cmake。请告诉我如何在cmakelists.txt文件中设置这些内容。
这是我的Android.mk文件
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)
如何在cmake中设置这些东西
最佳答案
为时已晚,但有人可能会觉得有用。
首先,将opencv 2的libopencv_java.so或oepncv3的libopencv_java3.so放置在不同体系结构下的app / src / main / jniLibs文件夹中,如果还把linonfree.so添加到jniLibs文件夹中。将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']
}
}