美文网首页
NDK-FFmpeg CMakeLists配置

NDK-FFmpeg CMakeLists配置

作者: 杨0612 | 来源:发表于2020-01-09 10:55 被阅读0次

    开发环境:Android Studio 3.5.2+gradle-5.4.1-all
    引入方式:头文件+静态库

    CMakeLists文件主要包含6个配置语句。

    cmake_minimum_required(VERSION 3.4.1)
    
    add_library(ffmpegmediaplayer
                SHARED
                native-lib.cpp) 
    
    include_directories(include)
    
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/../../../libs/${CMAKE_ANDROID_ARCH_ABI}")
    
    find_library(log-lib
                 log)
    
    target_link_libraries(ffmpegmediaplayer
                          -Wl,--start-group
                          avfilter
                          avformat
                          avcodec
                          avutil
                          swresample
                          swscale
                          -Wl,--end-group
                           z
                           android
                           ${log-lib})
    

    1.cmake_minimum_required(VERSION 3.4.1)

    从名称上可以看到,这里是配置cmake最低需要的版本,这个是默认生成的,没有特殊要求,可以不用管。

    2.add_library

    ffmpegmediaplayer, 配置生成so动态库的名称,可自定义。生成的动态库完整名称为libffmpegmediaplayer.so。

    SHARED,配置该库为动态共享库。

    native-lib.cpp,c++源文件,文件在app/src/main/cpp 目录下,也就是我们常说的JNI文件,可以配置多个。

    3.include_directories

    配置头文件路径,类似配置windows的环境变量,不配置编译时出现找不到库的情况
    include,是头文件路径,因为头文件是放app/src/main/cpp/include,而这里默认使用相对路径,所以只需要填入include即可。

    4.set

    set语句配置一个系统变量,类似windows的环境变量。这里将静态库的路径加入到系统变量中。CMAKE_SOURCE_DIR表示app/src/main/cpp/,两个点点表示回退到上一个目录,三组点点就是回退到app这个一级。CMAKE_ANDROID_ARCH_ABI指明对应不同的CPU平台。

    5.find_library

    因为在JNI层要用到打印日志,所以配置加载Android自带的log库,命名为log-lib是为了方便使用,这个库在sdk/ndk目录下。

    6.target_link_libraries

    生成ffmpegmediaplayer动态库时,将声明的库(包括静态库和动态库)链接进去。因为链接库是有先后顺序的(前者依赖于后者),所以用-Wl,--start-group -Wl,--end-group表示忽略链接顺序,也可以不忽略顺序,但是顺序一定要正确,要不然编译会出现找不到库的情况。z库以及android库也是需要用到的,这两个库同样在sdk/ndk目录下。avfilter avformat avcodec avutil swresample swscale,这几个ffmpeg静态库放在项目/libs目录下。

    7.特别说明:

    7.1 新建的项目,CMakeLists文件默认在cpp目录下,所以对于文件路径的引
    用默认是app/src/main/cpp/开头的。
    7.2 FFmepg用到的头文件放到app/src/main/cpp/include目录下
    7.3 FFmepg用到的静态库放到app/libs目录下

    相关文章

      网友评论

          本文标题:NDK-FFmpeg CMakeLists配置

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