安装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