首先看下android.mk内容包含的基本信息
打开工程目录下external/yun_log_monitor/Android.mk,内容如下:
#
# = 是最基本的赋值
# := 是覆盖之前的值
# ?= 是如果没有被赋值过就赋予等号后面的值
# += 是添加等号后面的值
# 编译系统提供的宏函数 my-dir 将返回当前目录(Android.mk 文件本身所在的目录)的路径
LOCAL_PATH := $(call my-dir)
$(warning >>> LOCAL_PATH = $(LOCAL_PATH)) #打印LOCAL—PATH路径LOCAL_PATH = external/yun_log_monitor/
#
#
# 声明 CLEAR_VARS 变量,其值由编译系统提供,在描述每个模块之前,必须声明(重新声明)此变量
# CLEAR_VARS 变量指向一个特殊的 GNU Makefile,后者会清除许多 LOCAL_XXX 变量,
# 例如 LOCAL_MODULE、LOCAL_SRC_FILES 和 LOCAL_STATIC_LIBRARIES。
# 请注意,GNU Makefile 不会清除 LOCAL_PATH
# 这个清理动作是必须的,因为所有的编译控制文件由同一个GNU Make解析和执行,其变量是全局的。所以清理后才能避免相互影响
include $(CLEAR_VARS)
# 要编译到模块中的 C 或 C++ 源文件
LOCAL_SRC_FILES := \
yun_log_monitor.c\
xxx.c\
xxxxxx.c
LOCAL_SHARED_LIBRARIES :=
LOCAL_CFLAGS :=
# LOCAL_MODULE 变量存储您要编译的模块的名称,每个模块名称必须唯一,且不含任何空格
LOCAL_MODULE := yun_log_monitor
# 生成模块的路径
LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
# 生成模块的标记
LOCAL_MODULE_TAGS := debug
# BUILD_SHARED_LIBRARY:是Build System提供的一个变量,指向一个GNU Makefile Script。
# 它负责收集自从上次调用 include $(CLEAR_VARS) 后的所有LOCAL_XXX信息。并决定编译为什么。
# BUILD_STATIC_LIBRARY:编译为静态库。
# BUILD_SHARED_LIBRARY :编译为动态库
# BUILD_EXECUTABLE:编译为Native C可执行程序
include $(BUILD_EXECUTABLE)
参考资料:
android编译系统makefile(Android.mk)写法.
Android.mk 文件语法详解.
Android mk详解.