Android中CMake的使用之三调用第三方库

Android中CMake的使用之三调用第三方库


在开发过的过程中,难免会调用第三方的库,比如说ffmp啊,opencv等等啊,这就会出现这样一个问题,如何使用这种第三方的SO呢(.a)?这里需要说明一下的是,需要把NDK中自带的库的排除在第三方库之外,因为自己的环境么,使用起来还是比较简单的,在find_library中进行简单设置一下就可以了。看一下自带的例程上的说明即可。
先按惯例上一下设置的CMakeLists.txt中的代码:
add_library( # Sets the name of the library.
             test-lib


             # Sets the library as a shared library.
             SHARED


             # Provides a relative path to your source file(s).
             IMPORTED)
set_target_properties(
            test-lib
            PROPERTIES IMPORTED_LOCATION
            #${Project}/app/libs/${ANDROID_ABI}/libtest-lib.so//需设置Project
            ${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libtest-lib.so
           #../../../../libs/${ANDROID_ABI}/libtest-lib.so

target_link_libraries( # Specifies the target library.
                       native-lib test-lib


                       # Links the target library to the log library
                       # included in the NDK.
                       ${log-lib} )


这里最让人折腾的心烦的地方是红色的路径设置部分,按照类似于add_library中的路径设置根本没用,编译直接报错,后来只好使用绝对路径,即把整个路径设置好,就没有问题,但是这么做的话有一个缺点啊,很不方便而且容易在工程的拷贝过程中,引起不必要的修改,导致代码管理上的问题。
最后几经查找和实验,发现设置的红色路径可以用。非红色的那个,需要设置一下Project这个宏,其实和绝对路径没有差别了。
网上说,第三库的位置是相对于CPP(.c)的相对位置(个人分析了更倾向于.externalNativeBuild中的编译路径,没找到权威的说明),不过最好使用 {CMAKE_SOURCE_DIR},这个清晰明了。
对于使用的第三主库提供了第三方的头文件 的,可以将头文件直接拷贝到当前目录下使用,也可以使用CMakeLists.txt中提供的include_directories(imported-lib/include/).一般情况下来说,直接拷贝过来比较方便,除非你大规模的使用了相关的第三方库,为了管理方便,那么前者就更好用一些。
最后一个需要说明的是,引用了多个库以后,要加入到LOADLIBRARY中,否则崩溃,如下:
static {
    System.loadLibrary("test-lib");
    System.loadLibrary("native-lib");
}
万事开头难,第一脚不好踢,踢出去才发现,其实也就那样。
CMake安装第三方库有多种方法。一种常见的方法是使用find_package命令。这个命令可以用来查找和引入系统已经安装的库。您可以在CMakeLists.txt文件使用find_package命令,并指定您要引入的库的名称。CMake会根据您的系统配置自动查找这个库,并将其引入到您的项目。这种方法的优点是简单方便,不需要手动下载和设置库的构建过程。 另一种方法是使用include(FetchContent)命令。这个命令允许您从指定的URL或Git存储库提取第三方库,并将其作为CMake项目的子目录构建。使用FetchContent命令时,您无需手动下载、解压缩或设置外部库的构建过程,CMake会自动执行这些任务。这种方法的优点是它使得引入第三方库更加方便,并且使得与外部库的集成更加简单。同时,使用FetchContent命令时,您可以很容易地在您的CMake项目指定外部库的版本和源代码位置。 另外,对于Android开发,您可以使用NDK-Build编译出各平台的so文件,然后将这些文件引入到您的CMake项目。这种方法适用于调用第三方库的场景。您可以在CMakeLists.txt文件使用add_library命令,将这些so文件添加到您的项目。 综上所述,安装第三方库的方法包括使用find_package命令、include(FetchContent)命令和使用NDK-Build编译出so文件。您可以根据您的具体需求和项目情况选择适合的方法来安装第三方库。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值