android makefile 语法总结
来源:互联网 发布:网络算命婚姻 编辑:程序博客网 时间:2024/06/03 04:35
以下android.mk 文件为例来说明一下android makefile 文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/../lib/include \
$(LOCAL_PATH)/include
LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog
LOCAL_MODULE := libjni_eng_mode
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := \
com_yulong_engineering_interfaces_EngineeringManager.c \
eng_mode_functions.c \
eng_utils.c
LOCAL_SHARED_LIBRARIES := lib_eng_mode
#LOCAL_32_BIT_ONLY := true
include $(BUILD_SHARED_LIBRARY)
Android.mk基本组成
1. LOCAL_PATH 定义了当前模块的相对路径,必须出现在所有的编译模块之前
2. 每个编译模块由include $(CLEAR_VARS) 开始,由include $(BUILD_XXX) 结束
3. include $(CLEAR_VARS) 是一个编译模块的开始,它会清空除LOCAL_PATH之外的所有LOCA_XXX变量
4. include $(BUILD_XXX) 是编译目标。
5. LOCAL_SRC_FILES 定义了本模块编译使用的源文件,采用的是基于LOCAL_PATH的相对路径
6. LOCAL_MODULE 定义了本模块的模块名
可选项:
· LOCAL_STATIC_LIBRARIES 表示编译本模块时需要链接的静态库
· LOCAL_C_INCLUDES 表示了本模块需要引用的include文件
以下对一些项目进行分析
一 编译目标(include $(BUILD_XXX) 一般在最后)
编译目标如下表
编译目标
说明
BUILD_HOST_STATIC_LIBRARY
主机上的静态库
BUILD_HOST_SHARED_LIBRARY
主机上的动态库
BUILD_HOST_EXECUTABLE
主机上的可执行文件
BUILD_STATIC_LIBRARY
目标设备上的静态库
BUILD_SHARED_LIBRARY
目标设备上的动态库
BUILD_EXECUTABLE
目标设备上的可执行文件
BUILD_JAVA_LIBRARY
JAVA库
BUILD_STATIC_JAVA_LIBRARY
静态JAVA库
BUILD_HOST_JAVA_LIBRARY
主机上的JAVA库
BUILD_PACKAGE
APK程序
二 LOCAL_PATH
为什么需要首先定义LOCAL_PATH呢?
请看一下NDK 文件的描述
This is a list of source files that will be built for your module. Only list the files that will be passed to a compiler, since the build system automatically computes dependencies for you.
Note that source files names are all relative to LOCAL_PATH and you can use path components .
因此在定义LOCAL_SRC_FILES 时已经间接的使用到了LOCAL_PATH变量,即定义LOCAL_SRC_FILES是用的基于当前路径的相对路径。
所以LOCAL_PATH的定义必须要放在任何include $(CLEAR_VARS)语句之前,如果不这么做的话,编译就直接报错,停止不干了。
通常LOCAL_PATH := $(call my-dir),也就是当前目录(一般android.mk文件都会放到对应编译模块下。)
三 include $(CLEAR_VARS)
编译模块的开始,它会清空之前的所有代码(除LOCAL_PATH之外)
四 LOCAL_SRC_FILES
从变量名可以很容易看出,定义了模块的源文件列表。
五 LOCAL_MODULE
定义编译模块的模块名。
六 LOCAL_MODULE_TAGS
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
七 LOCAL_SHARED_LIBRARIES
LOCAL_SHARED_LIBRARIES:当前模块在运行时依赖的动态库的名称。
LOCAL_STATIC_LIBRARIES:当前模块在运行时依赖的静态库的名称
八 LOCAL_32_BIT_ONLY
仅构建32位静态库、动态库、可执行文件
这中参数的设置可以采用以下三种:
1. LOCAL_32_BIT_ONLY := true
2. TARGET_PREFER_32_BIT := true
3. LOCAL_MULTILIB
第三种的值可以是以下几种:
· "both": build both 32-bit and 64-bit.
· "32": build only 32-bit.
· "64": build only 64-bit.
· "first": build for only the first arch (32-bit in 32-bit devices and 64-bit in 64-bit devices).
· "": the default; the build system decides what arch to build based on the module class and other LOCAL_ variables, such as LOCAL_MODULE_TARGET_ARCH, LOCAL_32_BIT_ONLY, etc.
- android makefile 语法总结
- Makefile的语法总结
- Android makefile语法
- Android Makefile 编写总结
- makefile语法总结—超经典
- Makefile 语法
- makefile语法
- makefile语法
- Makefile语法
- makefile语法
- makefile语法
- makefile 中shell的简单语法(简单总结)
- Android makefile编译系统 Android.mk 文件语法规范
- android.mk文件语法总结
- Android makefile文件语法规范及使用模板
- Android Makefile的常用写法总结
- Android MakeFile 常用变量/函数总结
- makefile的基本语法
- 循环引用的坑
- "阻塞--中断"驱动模型在i2c在子系统、uart驱动、spi子系统中的实现
- 程序设计与算法 第四周测验
- Linux主机和VirtualBox之间实现串口通信
- js中几种实用的跨域方法原理详解
- android makefile 语法总结
- 108. Convert Sorted Array to Binary Search Tree
- Microsoft远程桌面协议RDP远程代码可执行漏洞(CVE-2012-0002)(MS12-020)
- Use printf in Android JNI
- GestureDetector中onFling()与onScroll()的区别
- Get请求iOS编码NSUTF8StringEncoding(%转%25) 问题
- 【demo积累】——真分页查询
- mac 下git命令自动补全
- OpenProcess函数