美文网首页
Android NDK开发之CMake

Android NDK开发之CMake

作者: 神圣于天地 | 来源:发表于2019-03-18 14:29 被阅读0次

       NDK的构建有两种方式,一种是早期使用的ndk-build,一种是在Android Studio2.2之后推荐使用的cmake,我们今天只说推荐的cmake这种方式.

CMakeLists.txt的写法

add_library 使用指定的源文件将库添加到项目中

普通库

// 添加普通库的语法

add_library(<name> [STATIC | SHARED | MODULE]

    [EXCLUDE_FROM_ALL]

    [source1] [source2 ...])

// 创建ndk项目中默认生成的例子

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 )

复制代码name属性没什么好说的,注意全局唯一就好.

[STATIC | SHARED | MODULE]的话是生成的库的类型,STATIC的话生成的是静态库,也就是.a后缀的.我们一般用的都是SHARED生成动态链接库,也就是.so后缀的.

导入库

// 语法

add_library(<name> <SHARED|STATIC|MODULE|OBJECT|UNKNOWN> IMPORTED

    [GLOBAL])

// 导入编译好的ffmpeg样例   

add_library( ffmpeg

    SHARED

    IMPORTED )

// 设置需要导入的ffmpeg位置

set_target_properties( ffmpeg

              PROPERTIES IMPORTED_LOCATION

              ../../../../libs/armeabi-v7a/libffmpeg.so )   

复制代码这种方式可以把我们在外部编译好的.so库导进来

还有几种我也没用过了,可以参考官方文档看下add_library

include_directories 用来导入相关头文件

include_directories(src/main/cpp)

复制代码

find_library 用来引入NDK中提供的库.

Android NDK 原生 API

find_library(

          # 定义存储NDK库位置的路径变量的名称。

          log-lib

          # 指定CMake要查找的NDK库的名称。

          log )

复制代码

target_link_libraries 将导入的库和自己的原生库关联起来

target_link_libraries(

                  # 指定目标库。

                  native-lib

                  # 将目标库链接到NDK中包含的日志库。

                  ${log-lib} )

相关文章

网友评论

      本文标题:Android NDK开发之CMake

      本文链接:https://www.haomeiwen.com/subject/ftwvmqtx.html