1.
打印输出:$(warning xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)或者$(error xxxxx)
打印输出变量的值:$(warning $(LOCAL_SHARED_LIBRARIES))
2.
LOCAL_CFLAGS += -DAOA_DEBUG
表示执行.cpp文件中定义AOA_DEBUG内的输出,如:
#ifdef AOA_DEBUG
printf("hello word");
#endif
则会执行printf语句.
3.
LOCAL_MODULE_TAGS := optional/eng/user/tests
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
4.
LOCAL_SRC_FILES :=$(shell cd $(LOCAL_PATH); find . -iname '*.cpp' -o -iname '*.c')
编译LOCAL_PATH下的所有.cpp和.c文件,当然也可以一个一个的列出来,我通常用后者
5.
LOCAL_C_INCLUDES := $(LOCAL_PATH) \
包含路径
6.
LOCAL_SHARED_LIBRARIES := libcore
包含动态库
7.
LOCAL_STATIC_LIBRARIES := libcore
包含静态库
include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)
include $(BUILD_STATIC_LIBRARY)
分别为编译bin文件,动态库,静态库
抄的别人的:
LOCAL_PATH := $(call my-dir)
每个Android.mk文件必须以定义LOCAL_PATH为开始。它用于在开发tree中查找源文件。
宏my-dir 则由Build System提供。返回包含Android.mk的目录路径。
include $(CLEAR_VARS)
CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx.
例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理LOCAL_PATH.
这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相互影响。
LOCAL_MODULE := hello-jni
LOCAL_MODULE模块必须定义,以表示Android.mk中的每一个模块。名字必须唯一且不包含空格。
Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so. 但请注意:如果模块名被定为:libfoo.则生成libfoo.so. 不再加前缀。
更多请参考:http://blog.csdn.net/aaronzzq/article/details/45150587
打印输出:$(warning xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)或者$(error xxxxx)
打印输出变量的值:$(warning $(LOCAL_SHARED_LIBRARIES))
2.
LOCAL_CFLAGS += -DAOA_DEBUG
表示执行.cpp文件中定义AOA_DEBUG内的输出,如:
#ifdef AOA_DEBUG
printf("hello word");
#endif
则会执行printf语句.
3.
LOCAL_MODULE_TAGS := optional/eng/user/tests
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译
4.
LOCAL_SRC_FILES :=$(shell cd $(LOCAL_PATH); find . -iname '*.cpp' -o -iname '*.c')
编译LOCAL_PATH下的所有.cpp和.c文件,当然也可以一个一个的列出来,我通常用后者
5.
LOCAL_C_INCLUDES := $(LOCAL_PATH) \
包含路径
6.
LOCAL_SHARED_LIBRARIES := libcore
包含动态库
7.
LOCAL_STATIC_LIBRARIES := libcore
包含静态库
LOCAL_LDFLAGS := -lpthread -lrt
include $(BUILD_EXECUTABLE)
include $(BUILD_SHARED_LIBRARY)
include $(BUILD_STATIC_LIBRARY)
分别为编译bin文件,动态库,静态库
抄的别人的:
LOCAL_PATH := $(call my-dir)
每个Android.mk文件必须以定义LOCAL_PATH为开始。它用于在开发tree中查找源文件。
宏my-dir 则由Build System提供。返回包含Android.mk的目录路径。
include $(CLEAR_VARS)
CLEAR_VARS 变量由Build System提供。并指向一个指定的GNU Makefile,由它负责清理很多LOCAL_xxx.
例如:LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES等等。但不清理LOCAL_PATH.
这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相互影响。
LOCAL_MODULE := hello-jni
LOCAL_MODULE模块必须定义,以表示Android.mk中的每一个模块。名字必须唯一且不包含空格。
Build System会自动添加适当的前缀和后缀。例如,foo,要产生动态库,则生成libfoo.so. 但请注意:如果模块名被定为:libfoo.则生成libfoo.so. 不再加前缀。
这里注意,有时候会造成错误,参看该博客中的另一篇关于mk的记录: mk编译错误
Function: first-makefiles-under
在某个目录下的所有子目录中查找Android.mk,不包括当前目录
$(1):要搜索的目录
更多请参考:http://blog.csdn.net/aaronzzq/article/details/45150587