Android.mk可以生產的基本文件 LOCAL_PATH:P=$(call my dir) //返回該Android.mk所在目錄的路徑,必須放在第一行 定義了當前模塊的相對路徑 include $(CLEAR_VARS) //清除變數 清空當前環境變數 LOCAL_MODULE:=test / ...
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.生產格式,二進位文件
編程中我們會遇到多少挫折?表放棄,沙漠盡頭必是綠洲。