1. 前言
在android2.2中,加入了cmake编译,而以前都是用Android.mk、Application.mk的,今天就来记录下,他们的配置选项。
2. Android.mk
Android.mk在jni目录下,用于描述构建系统的源文件以及
shared libraries 。文件格式如下:
- 以LOCAL_PATH变量开始
LOCAL_PATH := $(call my-dir)
- 紧接着是CLEAR_VARS变量
include $(CLEAR_VARS)
- 接下来LOCAL_MODULE变量,定义来将要输出的so文件的名,默认情况下,输出的so为 lib+LOCAL_MODULE变量值+.so,如果变量值前面有了lib,就不会加了,或者变量值后面有.xxx,也会去掉。
- 接下来是LOCAL_SRC_FILES变量,声明我们的原文件路径,如
LOCAL_SRC_FILES := hello-jni.c
- 最后一行是帮助构建系统联系在一起的。
include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello.cpp
include $(BUILD_SHARED_LIBRARY)
当然,上面只是一个最简单的,下面我们来介绍其他的一些变量和宏。
构建系统提供了许多变量和宏,当然 也允许我们自定义,内置的有以下三种:
- 以LOCAL_开始,如LOCAL_MODULE
- 以PRIVATE_, NDK_, or APP
- 小写字母,如 my-di
如果要自定义的话,建议MY_开头。
2.1 NDK 默认的变量
- CLEAR_VARS 用来在描述新model之前引入这个脚本,会清除之前的值
include $(CLEAR_VARS)
- BUILD_SHARED_LIBRARY,告诉构建系统去收集声明的LOCAL_变量的值,然后输出成so
include $(BUILD_SHARED_LIBRARY)
- BUILD_STATIC_LIBRARY,和BUILD_SH