cmake和android.mk调试,Android NDK Cmakelist.txt与Android.mk、Application.mk Makefile 编译配置开发...

本文介绍了Android Studio中使用CMake进行原生库构建的基本配置和注意事项,包括CMakeLists.txt的编写,如何设置cflags和cxxflags,以及链接预编译库的方法。对比了CMake与Android.mk在Android 5.0及以下和6.0及以上版本的差异,并强调了在6.0以上系统中,CMake能自动加载依赖库,而Android.mk不能。最后提到了Application.mk中的全局配置选项。
摘要由CSDN通过智能技术生成

CMake基本配置与注意事项

CMake

​    在android studio 2.2及以上,构建原生库的默认工具是 CMake。

​    CMake是一个跨平台的构建工具,可以用简单的语句来描述所有平台的安装(编译过程)。能够输出各种各样的makefile或者project文件。Cmake 并不直接建构出最终的软件,而是产生其他工具的脚本(如Makefile ),然后再依这个工具的构建方式使用。

​    CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。从而达到跨平台的目的。Android Studio利用CMake生成的是ninja,ninja是一个小型的关注速度的构建系统。我们不需要关心ninja的脚本,知道怎么配置cmake就可以了。从而可以看出cmake其实是一个跨平台的支持产出各种不同的构建脚本的一个工具。

CMake的脚本名默认是CMakeLists.txt,cmake最低版本:cmake_minimum_required(VERSION 3.6.0)

现在到android studio中使用cmakelist NDK中已经有一部分预构建库 ndk库已经是被配置为cmake搜索路径的一部分 所以可以

findLibrary(log-lib log)

target_link_libraries( native-lib ${log-lib} )

设置cflag和cxxflag

定义预编译宏:TEST

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DTEST"  )

set(CMAKE_Cxx_FLAGS "${CMAKE_Cxx_FLAGS} -DTEST"  )              //c++: CMAKE_CXX_FLAGS

其实直接这样就行

target_link_libraries( native-lib  log )

添加其他预编译库(已经提前编译好的库)

使用 IMPORTED 标志告知 CMake 只希望将库导入到项目中

如果是静态库则将shared改为static

add_library( imported-lib

SHARED

IMPORTED )

参数分别为:库、属性、导入地址、so所在地址

set_target_properties(

imported-lib

PROPERTIES

IMPORTED_LOCATION

${CMAKE_SOURCE_DIR}/src/${ANDROID_ABI}/libimported-lib.so )

为了确保 CMake 可以在编译时定位头文件,这样就可以使用 #include 引入,否则需要使用 #include "path/xx"

include_directories( imported-lib/include/ )

native-lib 是自己编写的源码最终要编译出的so库

target_lin

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值