AndroidStudioNDK开发CMakeLists.txt详解

1.设置CMake版本信息

cmake_minimum_required(VERSION versionNum)


#CMake版本信息
cmake_minimum_required(VERSION 3.4.1)

2.配置库信息

# 配置so库信息
add_library( # Sets the name of the library.
            # 生成的so库名称,此处生成的so文件名称是libnative-lib.so
             native-lib

             # Sets the library as a shared library.
             # STATIC:静态库,是目标文件的归档文件,在链接其它目标的时候使用
             # SHARED:动态库,会被动态链接,在运行时被加载
             # MODULE:模块库,是不会被链接到其它目标中的插件,但是可能会在运行时使用dlopen-系列的函数动态链接
             SHARED

             # Provides a relative path to your source file(s).
             # 资源文件,可以多个,
             # 资源路径是相对路径,相对于本CMakeLists.txt所在目录
             src/main/cpp/native-lib.cpp )

3. 设置OpenCV路径


#OpenCV-android-sdk路径
set(pathToOpenCv C:/Developer/OpenCV-android-sdk)

4. 设置C/C++支持


#支持-std=gnu++11
set(CMAKE_VERBOSE_MAKEFILE on)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")

5. add_library()添加库文件或源文件


add_library(native-lib SHARED src/main/jni/NDKLib.cpp )

6. include_directories()

指定头文件库路径


include_directories(src/main/cpp/include/)

7. find_library()
从系统查找依赖库,这里添加log日志库
find_library( # Defines the name of the path variable that stores the
              # location of the NDK library.
              # android系统每个类型库存放在一个特定位置,而log库存放在log-lib中
              log-lib

              # Specifies the name of the NDK library that
              # CMake needs to locate.
              log )

8.target_link_libraries()

配置库的链接

# Links your native library against one or more other native libraries.
target_link_libraries( # Specifies the target library.
                       # 目标库
                       native-lib

                       # Links the log library to the target library.
                       # 依赖于库
                       lib-gmath
                       lib-gperf
                       ${log-lib} )

9.set_target_properties()

 设置库文件

#引入libopencv_java3.so文件
set_target_properties(lib_opencv PROPERTIES IMPORTED_LOCATION 
${pathToProject}/app/src/main/jniLibs/${ANDROID_ABI}/libopencv_java3.so)

10. link_directories()

引用相关目录;

#相关库文件的目录
link_directories(/usr/local/lib)

11. 创建一个静态库

# 创建一个静态库 lib_gmath 直接引用libgmath.a
add_library(lib_gmath STATIC IMPORTED)
set_target_properties(lib_gmath PROPERTIES IMPORTED_LOCATION ${distribution_DIR}/gmath/lib/${ANDROID_ABI}/libgmath.a)

猜你喜欢

转载自blog.csdn.net/niuba123456/article/details/81059074