Makefile 中:= ?= += =的区别:
= 是最基本的赋值 (变量的值将会是整个makefile中最后被指定的值)
:= 是覆盖之前的值 (变量的值决定于它在makefile中的顺序,而不是整个makefile展开后的最终值)
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值
Android.mk常用的变量
变量名 | 参数 | 功能 |
---|---|---|
LOCAL_INIT_RC | RC文件名 | 将服务相关的RC文件编译到相应etc/init |
LOCAL_VENDOR_MODULE | true | 供应商模块是指供应商专用的可执行文件或共享库,这些模块必须安装到供应商分区中。在 Android.bp 文件中,供应商模块必须将 vendor 或 proprietary 属性设为 true。在 Android.mk 文件中,供应商模块必须将 LOCAL_VENDOR_MODULE 或 LOCAL_PROPRIETARY_MODULE 设为 true |
LOCAL_MODULE | 模块名 | 定义模块名字 |
LOCAL_MODULE_TAGS | user eng tests optional | 决定在相应的版本能否编译 |
include $(BUILD_EXECUTABLE) | - | 编译为Native C可执行程序 |
include $(BUILD_STATIC_LIBRARY) | - | 编译为静态库 |
include $(BUILD_SHARED_LIBRARY) | - | 编译为动态库 |
LOCAL_SHARED_LIBRARIES | library name | 要链接到本模块的动态库 |
include $(CLEAR_VARS) | - | 清理LOCAL变量,除了LOCAL_PATH |
LOCAL_PATH := $(call my-dir) | - | 每个Android.mk文件必须以定义LOCAL_PATH为开始。它用于在开发tree中查找源文件,宏my-dir 则由Build System提供。返回包含Android.mk的目录路径 |