在NDK工程中,可以通过CMake语法规则引入并使用预构建库。在引用预构建库时,模块libs目录中的预构建库,以及在CMakeList.txt编译脚本中声明的预构建库都会被打包。
例如在项目中需要使用预构建库libavcodec_ffmpeg.so,其开发态存放路径如下图所示。
在模块的CMakeLists.txt编译脚本中通过add_library添加所需的预构建库,并声明预构建库路径等信息后,可以在target_link_libraries中声明链接该预构建库,脚本示例如下所示:
add_library(library SHARED hello.cpp)
add_library(avcodec_ffmpeg SHARED IMPORTED)
set_target_properties(avcodec_ffmpeg
PROPERTIES
IMPORTED_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/third_party/FFmpeg/libs/${OHOS_ARCH}/libavcodec_ffmpeg.so)
target_link_libraries(library PUBLIC libace_napi.z.so avcodec_ffmpeg)
当在HAR中使用预构建库时,当前编译的库和链接所需预构建库会打包到HAR中的libs目录下,如下图所示。