Android中CMake的使用之三调用第三方库
来源:互联网 发布:解剖学软件 编辑:程序博客网 时间:2024/06/05 03:50
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");
}
万事开头难,第一脚不好踢,踢出去才发现,其实也就那样。
在开发过的过程中,难免会调用第三方的库,比如说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");
}
万事开头难,第一脚不好踢,踢出去才发现,其实也就那样。
1 1
- Android中CMake的使用之三调用第三方库
- Android中CMake的使用之四调用第三方库的实战
- Android中CMake的使用之五调用第三方库的完善
- CLion中使用CMake导入第三方库的方法
- CLion中使用CMake导入第三方库的方法
- Android studio关于Cmake的使用(第三章·引用第三方库文件)
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- 关于Android NDK中调用第三方的动态库
- Android NDK中调用第三方的动态库
- CoreData的使用之三:MagicalRecord第三方库
- [CMake] 第三方库使用示例
- Android调用第三方库的方法
- Android中使用jni调用第三方源码:grep(1)
- 【java基础】线程笔记——LockSupport
- HTML学习笔记3
- Android中CMake的使用之二具体的使用细节
- iOS中Apple Mach_O Linker Error
- Canvas 输出位图
- Android中CMake的使用之三调用第三方库
- Application
- linux的内存多种创建方式
- 关于mysql实时同步到mssql的解决方案
- onunload与onbeforeunload事件解析
- Swagger
- 十七、UI-Grid 无障碍性
- maven常用命令
- Maven-项目中指定要使用的仓库