NDK 打包静态库和动态库,Cmake方式(二)

安装cmake

这里使用AndroidStudio,SDKTools里面的cmake


}{P~DF46)Q3BIZD12K3R2@W.png

安装完成后可以在sdk目录查看是否安装完成:


O2$1S2P8E`G78@Z}71G6B$J.png

执行cmake --version查看安装版本:
7UZIZE}07NKLY8~0P``7FTD.png

打开~/.bashrc文件,把cmake配置到环境变量:


image.png

在任意目录下执行cmake --version查看安装版本:
image.png

打包静态库

新建文件 CMakeLists.txt(命名必须是 CMakeLists.txt,注意大小写和不要漏字母)


COK[XS_%_WMEYJM$$T]{M)E.png
cmake_minimum_required(VERSION 3.4.1)
add_library(test test.c)

新建一个 build 文件夹:


OA39S6MR8BEHWE8_E9G}3XO.png

为什么要新建一个 build 文件夹?
一般我们采用 cmake 的 out-of-source 方式来构建(即生成的中间产物和源代码分离),这样做可以让生成的文件和源文件不会弄混,且目录结构看起来也会清晰明了。所以推荐使用这种方式,至于这个文件夹的命名并无限制,我们习惯命名为 build。

首先进入到 build 目录,然后就是 cmake .. 命令,.. 表示上一级目录,cmake 会在上一级目录下找到 CMakeLists.txt 文件并编译,并生成如下图所示的一些中间文件:


image.png

这里报错了,原因是test是某些cmake特性保留的关键字,修改下 CMakeLists.txt

cmake_minimum_required(VERSION 3.4.1)
add_library(t test.c)
`RU@AGVULMMF9MMJ8_ZQ`J8.png

可以看到产生了一些中间文件,以及一个Makefile文件
然后执行make命令,其实是执行Makefile文件里面的命令:


@210@@72PP3RA08}F3AEIJD.png

然后进入到上一级目录链接执行:


image.png

打包动态库

打包动态库和静态库的区别就是添加一个SHARED参数:

cmake_minimum_required(VERSION 3.4.1)
add_library(t SHARED test.c)
image.png

然后进入到上一级目录链接执行:


DD1B1@7G5(1PNHHMVJDG4$Y.png

执行如下:


image.png

这里也可以不用手动链接库,修改下目录,将test.c,test.h, CMakeLists.txt放在test文件夹下:
image.png

新建一个 CMakeLists.txt生成可执行文件:


image.png
cmake_minimum_required(VERSION 3.4.1)
add_subdirectory(test)
include_directories(test) //把头文件目录包含进来
add_executable(main hello.c)
target_link_libraries(main t)

进入到build目录,依次执行cmake,make,./main


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容