一、篇头
- Android.mk也是需要通过make程序去解释执行,语法同Makefile文件
- Andorid AOSP代码中,依旧还有大量地方在使用mk文件,今日遇上,概念混淆,记录一下
二、结论
= 是最基本的赋值,左边变量赋予右边的值,直接覆盖
:= 是覆盖之前的值,不论是用什么符号赋的值
?= 是如果没有被赋值过就赋予等号后面的值,如果之前有赋值,就跳过
+= 是添加等号后面的值,这个比较常用,追加值和属性
三、实验 1
3.1 makefile
- 新建一个makefile文件,填入如下内容
#1. 如果定义了DEFINE_VRE=true
ifdef DEFINE_VRE
VRE = “Hello World!”
else
#如果没有定义DEFINE_VRE,则什么也不做
endif
#2. 如果OPT变量等于“define”
ifeq ($(OPT),define)
VRE ?= “Hello World! First!”
endif
#3. 如果OPT变量等于“add”
ifeq ($(OPT),add)
VRE += “Kelly!”
endif
#4. 如果OPT变量等于“recover”
ifeq ($(OPT),recover)
VRE := “Hello World! Again!”
endif
#5. 打印 $(VRE) 的值”
all:
@echo $(VRE)
3.2 执行结果
敲入以下make命令:
make DEFINE_VRE=true OPT=define 输出:Hello World!
解释:走了1,2,5的流程,第2项使用的是 ?=, 因DEFINE_VRE已经被定义赋值过,所以值不变,还是1的VRE = “Hello World!”
make DEFINE_VRE=true OPT=add 输出:Hello World! Kelly!
解释:走了1,3,5的流程,第3项使用的是 += , 所以在第1项目的基础上,加入了字符串 “Kelly!”
以此类推:
make DEFINE_VRE=true OPT=recover 输出:Hello World! Again!
make DEFINE_VRE= OPT=define 输出:Hello World! First!
make DEFINE_VRE= OPT=add 输出:Kelly!
make DEFINE_VRE= OPT=recover 输出:Hello World! Again!
四、实验 2
4.1 Android.mk
• 例子:给$PARTITION_FILE_LIST追加值
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Reserve0.img
LOCAL_MODULE_CLASS:= ETC
LOCAL_MODULE_PATH := $(PRODUCT_OUT)
PARTITION_SIZE_M := 16
PARTITION_FILE_LIST ?= \
vendor/aw/homlet/tvsystem/tvserver/1.0/default/configs/panel_config/panel_config.ini
PARTITION_FILE_LIST += $(LOCAL_PATH)/advert.bmp
$(info 11111111111111111111111111111111111111111111111111111)
$(info $(PARTITION_FILE_LIST))
$(info 22222222222222222222222222222222222222222222222222222)
GEN := $(local-generated-sources-dir)/$(LOCAL_MODULE)
$(GEN): $(LOCAL_PATH)/gen.sh $(PARTITION_FILE_LIST)
$< $@ $(PARTITION_SIZE_M) "$(PARTITION_FILE_LIST)"
LOCAL_PREBUILT_MODULE_FILE := $(GEN)
include $(BUILD_PREBUILT)
4.2 执行结果
============================================
device/softwinner/ares/Reserve0/Android.mk was modified, regenerating...
[ 10% 28/258] including device/softwinner/ares/Reserve0/Android.mk ...
11111111111111111111111111111111111111111111111111111
device/softwinner/ares/h713-tuna_perf1/panel_config/panel_config.ini device/softwinner/ares/Reserve0/advert.bmp
22222222222222222222222222222222222222222222222222222
[ 12% 31/258] including device/softwinner/common/config/wireless/Android.mk ...