Android.mk內的變量定義 函數
3.1 LOCAL_PATH 開發
一個Android.mk file首先必須定義好LOCAL_PATH變量。它用於在開發樹中查找源文件。例如: io
1.LOCAL_PATH:= $(call my-dir)
-
宏函數’my-dir’, 由編譯系統提供,用於返回當前路徑(即包含Android.mk file文件的目錄) 編譯
3.2 include $( CLEAR_VARS) test
宏CLEAR_VARS 由編譯系統提供,指定讓GNU MAKEFILE爲你清除許多LOCAL_XXX變量(例如 LOCAL_MODULE, LOCAL_SRC_FILES,LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH 。這是必要的,由於全部的編譯控制文件都在同一個GNU MAKE執行環境中,全部的變量都是全局的。 變量
3.3 LOCAL_SRC_FILES gcc
本次須要編譯的源文件 file
3.4 LOCAL_SHARED_LIBRARIES 搜索
本次編譯須要連接的動態連接庫文件,即.so文件 gc
3.5 LOCAL_STATIC_LIBRARIES
靜態連接庫.
3.6 LOCAL_C_INCLUDES
本次編譯須要包含的頭文件,一個相對於當前目錄可選的路徑名單,當編譯全部的源文件(C,C++和彙編)時,它將被添加進include搜索路徑。例如:
LOCAL_C_INCLUDES := sources/foo
或者甚至:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../foo
3.6 LOCAL_LDLIBS
本次編譯的連接選項,至關於gcc -l後的參數
3.7 LOCAL_CFLAGS
一樣是編譯選項,至關於gcc -O後面的參數
3.8 LOCAL_MODULE
生成的模塊名,這個變量必須定義,表示make後將要生成的文件的名字
3.9 LOCAL_PACKAGE_NAME
apk文件名
3.10 LOCAL_MODULE_TAGS :=user eng tests optional
user: 指該模塊只在user版本下才編譯
eng: 指該模塊只在eng版本下才編譯
tests: 指該模塊只在tests版本下才編譯
optional:指該模塊在全部版本下都編譯
4 include
include可Android多以這樣的形式出現,如:include $( CLEAR_VARS),include $(BUILD_SHARED_LIBRARY).其實這個include能夠理解成"執行"的意思,那麼執行什麼呢?固然是看後邊的宏了.
宏CLEAR_VARS已經在3.2節中介紹過了,表示清除一些變量.
宏BUILD_SHARED_LIBRARY表示生成共享庫,即生成.so文件
所以include $(BUILD_SHARED_LIBRARY)就是指定在/system/lib/目錄下生成一個lib$(LOCAL_MOUDULE).so文件,一樣類型的宏以下:
•CLEAR_VARS 清除LOCAL_xxx變量 •BUILD_SHARED_LIBRARY 在/system/lib/目錄下生成lib$(LOCAL_MOUDULE).so文件 BUILD_STATIC_LIBRARY 生成lib$(LOCAL_MOUDULE).a文件 •BUILD_EXECUTABLE 在/system/bin/目錄下生成可執行文件 BUILD_PACKAGE 編譯成一個apk文件