Android.mk(零)
Android.mk可以生产的基本文件
LOCAL_PATH:P=$(call my-dir) //返回该Android.mk所在目录的路径,必须放在第一行 定义了当前模块的相对路径
include $(CLEAR_VARS) //清除变量 清空当前环境变量
LOCAL_MODULE:=test //生产目标文件 编译生成的目标名称
LOCAL_SRC_FILES:=test.c //源文件 编译该模块需要的源文件
LOCAL_MODULE_PATH:= $(LOCAL_PATH) //把目标文件生成在当前目录下
include $(BUILD_EXECUTABLE) //生成目标格式 编译所生成的目标文件格式
使用连接符来编译多个文件
LOCAL_SRC_FILES:=test.c
test2.c
my-dir的定义
build/core/definitions.mk
define my-dir
$(strip \
$(eval LOCAL_MODULE_MAKEFILE := $$(lastword $$(MAKEFILE_LIST))) \
$(if $(filter $(BUILD_SYSTEM)/% $(OUT_DIR)/%,$(LOCAL_MODULE_MAKEFILE)), \
$(error my-dir must be called before including any other makefile.) \
, \
$(patsubst %/,%,$(dir $(LOCAL_MODULE_MAKEFILE))) \
) \
)
endef
MAKEFILE_LIST
:在编译的时候,把当前目录下的所有Android.mk加载到这个里面
lastword
:取最后的MAKEFILE
这个环境变量中是否包含LOCAL_MODULE_MAKEFILE,如果包含,则Android.mk有问题,打印错误:error my-dir must be called before including any other makefile
,没有错误,则返回当前Android.mk的所在目录。
2.清空所有的环境变量:build/core/clear_vars.mk 这个目录下的所有环境变量
3.生产格式,二进制文件
编程中我们会遇到多少挫折?表放弃,沙漠尽头必是绿洲。