设置输出路径: 使用三方so
set(SDK_JNILIBS_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../jniLibs/) //获取jniibs的路径
link_directories(${SDK_JNILIBS_PATH}) //设置连接路径(到jniLibs)
add_library(DBoW2 SHARED IMPORTED) //添加一个新的连接library
//设置新的连接library的具体内容
set_target_properties(DBoW2 PROPERTIES IMPORTED_LOCATION
${SDK_JNILIBS_PATH}/${CMAKE_ANDROID_ARCH_ABI}/libDBoW2.so)
target_link_libraries(
xxx
${DBoW2} //连接到工程
xxx
}
android设置平台和编译版本: externalNativeBuild { cmake{ cppFlags "-frtti -fexceptions -std=gnu++11 -std=c++11 -DFFCMD -DGL_GLEXT_PROTOTYPES=1 -D__STDC_CONSTANT_MACROS" cppFlags "-DCONFIG_LIBJPEG_TURBO" cFlags "-DFFCMD -DANDROID_ABI=armeabi-v7a" abiFilters 'armeabi-v7a' } } 报错: cmake android_native_app_glue.h‘ file not found 添加头文件:
set(ANDROID_NATIVE_APP_GLUE ${ANDROID_NDK}/sources/android/native_app_glue)
添加静态库 参考:https://developer.android.com/studio/projects/configure-cmake
add_library( app-glue
STATIC
${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c )
# You need to link static libraries against your shared native library.
target_link_libraries( native-lib app-glue ${log-lib} )
两种方式都无效后,又加了一句:
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")