LOCAL_PATH := $(call my-dir)
- LOCAL_PATH := $(call my-dir)
每個(gè)Android.mk文件必須以定義LOCAL_PATH為開始。它用于在開發(fā)tree中查找源文件。宏my-dir 則由Build System提供。返回包含Android.mk的目錄路徑。
include $(CLEAR_VARS)
- include $(CLEAR_VARS)
CLEAR_VARS 變量由Build System提供。并指向一個(gè)指定的GNU Makefile,由它負(fù)責(zé)清理很多LOCAL_xxx.
例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理LOCAL_PATH.
這個(gè)清理動作是必須的,因?yàn)樗械木幾g控制文件由同一個(gè)GNU Make解析和執(zhí)行,其變量是全局的。所以清理后才能避免相互影響。
LOCAL_MODULE := hello-jni
- LOCAL_MODULE := hello-jni
LOCAL_MODULE模塊必須定義,以表示Android.mk中的每一個(gè)模塊。名字必須唯一且不包含空格。Build System會自動添加適當(dāng)?shù)那熬Y和后綴。例如,foo,要產(chǎn)生動態(tài)庫,則生成libfoo.so. 但請注意:如果模塊名被定為:libfoo。則生成libfoo.so. 不再加前綴。
LOCAL_MODULE_PATH :=$(TARGET_ROOT_OUT)
- LOCAL_MODULE_PATH :=$(TARGET_ROOT_OUT) 指定最后生成的模塊的目標(biāo)地址
TARGET_ROOT_OUT:根文件系統(tǒng),路徑為out/target/product/generic/root
TARGET_OUT:system文件系統(tǒng),路徑為out/target/product/generic/system
TARGET_OUT_DATA:data文件系統(tǒng),路徑為out/target/product/generic/data
除了上面的這些,NDK還提供了很多其他的TARGET_XXX_XXX變量,用于將生成的模塊拷貝到輸出目錄的不同路徑
默認(rèn)是TARGET_OUT
LOCAL_SRC_FILES := hello-jni.c
- LOCAL_SRC_FILES變量必須包含將要打包如模塊的C/C++ 源碼。不必列出頭文件,build System 會自動幫我們找出依賴文件。缺省的C++源碼的擴(kuò)展名為.cpp. 也可以修改,通過LOCAL_CPP_EXTENSION
--
include $(BUILD_SHARED_LIBRARY)
- BUILD_SHARED_LIBRARY:是Build System提供的一個(gè)變量,指向一個(gè)GNU Makefile Script。
它負(fù)責(zé)收集自從上次調(diào)用 include $(CLEAR_VARS) 后的所有LOCAL_XXX信息。并決定編譯為什么。
BUILD_STATIC_LIBRARY :編譯為靜態(tài)庫。
BUILD_SHARED_LIBRARY :編譯為動態(tài)庫
BUILD_EXECUTABLE :編譯為Native C可執(zhí)行程序
BUILD_PREBUILT :該模塊已經(jīng)預(yù)先編譯
NDK還定義了很多其他的BUILD_XXX_XXX變量,它們用來指定模塊的生成方式。
LOCAL_CFLAGS += $(GLOBAL_CFLAGS)
LOCAL_CFLAGS += -fPIC
- LOCAL_CFLAGS:
一個(gè)可選的設(shè)置,在編譯C/C++ source 時(shí)添加如Flags。
用來附加編譯選項(xiàng)。 注意:不要嘗試在此處修改編譯的優(yōu)化選項(xiàng)和Debug等級。它會通過您Application.mk中的信息自動指定。
也可以指定include 目錄通過:LOCAL_CFLAGS += -I<path>。 這個(gè)方法比使用LOCAL_C_INCLUDES要好。因?yàn)檫@樣也可以被ndk-debug使用。
LOCAL_SHARED_LIBRARIES += libffmpeg-neon
- 添加動態(tài)鏈接庫
LOCAL_STATIC_LIBRARIES += libIttiamhevcdec
- 添加靜態(tài)鏈接庫
LOCAL_C_INCLUDES += $(CODEC_SOURCE)/video/ffmpeg-2.7.1
- 一個(gè)可選的path列表。相對于NDK ROOT 目錄。編譯時(shí),將會把這些目錄附上。
LOCAL_LDLIBS := -llog -fpic -landroid -lz
- 可以用它來添加系統(tǒng)庫。
參考鏈接:
https://www.cnblogs.com/reality-soul/p/6893248.html
https://blog.csdn.net/love_heller/article/details/51556434