CmakeList的常见配置

1.想生成多个so库

# 设置构建本地库所需的最小版本的cbuild。
cmake_minimum_required(VERSION 3.4.1)
# 创建并命名一个库,将其设置为静态
#  或者共享,并提供其源代码的相对路径。
# 您可以定义多个库,而cbuild为您构建它们。
#  Gradle自动将共享库与你的APK打包。
add_library( hello-lib  #设置库的名称。即SO文件的名称,生产的so文件为“libhello-lib.so”,在加载的时候“System.loadLibrary("hello-lib");”
                SHARED  # 将库设置为共享库。
                src/main/jni/hello.cpp    # 提供一个源文件的相对路径
                src/main/jni/helloJni.cpp    # 提供同一个SO文件中的另一个源文件的相对路径
              )
#搜索指定的预构建库,并将该路径存储为一个变量。因为cbuild默认包含了搜索路径中的系统库,所以您只需要指定您想要添加的公共NDK库的名称。cbuild在完成构建之前验证这个库是否存在。
find_library(log-lib  # 设置path变量的名称。
              log   #  指定NDK库的名称 你想让CMake来定位。
               )
#指定库的库应该链接到你的目标库。您可以链接多个库,比如在这个构建脚本中定义的库、预构建的第三方库或系统库。
target_link_libraries( hello-lib     #指定目标库中。与 add_library的库名称一定要相同
                       ${log-lib}    # 将目标库链接到日志库包含在NDK。
                        )
#如果需要生产多个SO文件的话,写法如下
add_library( natave-lib  #设置库的名称。另一个so文件的名称
                SHARED  # 将库设置为共享库。
                src/main/jni/nataveJni.cpp    # 提供一个源文件的相对路径
              )
target_link_libraries( natave-lib     #指定目标库中。与 add_library的库名称一定要相同
                       ${log-lib}    # 将目标库链接到日志库包含在NDK。
                        )

这里是借鉴下面参考的博客里的,代码,我试了好使,不过还有一个坑在里面,就是如果你的库的名字起得不是叫xx-lib的话,编译是通不过的,亲测,比如起个so库名叫test,cpp文件叫做test.cpp,这样是编译不过的,不会生成多个so库。

2.生成一个so库,多个cpp文件

# 查找cpp目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量
aux_source_directory(src/main/cpp/ DIR_LIB_SRCS)
# 生成链接库
add_library (native-lib SHARED ${DIR_LIB_SRCS})

# 导入cpp目录下的所有头文件
include_directories(src/main/cpp/)

用上述一段代码,替换原有的add_library命令就可以了,其实就是生成一个变量,指定cpp的文件路径
我自己对Cmake语法懂得尚且不多,大家可以一起学习一下cmake语法,亲测可以用

配置多个so库
一个so库,多个cpp

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值