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 

1. 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.生產格式,二進制文件

編程中我們會遇到多少挫折?表放棄,沙漠盡頭必是綠洲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章