Android.mk的变量有哪些
Android.mk
文件是 Android 构建系统中用于定义模块和依赖关系的 Makefile 文件。它使用一系列变量来指定源文件、库、编译选项等。以下是一些常用的 Android.mk
变量及其用途:
常用变量
-
模块名称
LOCAL_MODULE
: 模块的名称,必须唯一。LOCAL_MODULE := mymodule
-
源文件
LOCAL_SRC_FILES
: 指定模块的源文件列表。LOCAL_SRC_FILES := main.c myfunc.c
-
C/C++ 标志
LOCAL_CFLAGS
: C 编译器标志。LOCAL_CFLAGS := -Wall -Wextra
LOCAL_CPPFLAGS
: C++ 编译器标志。LOCAL_CPPFLAGS := -std=c++11
LOCAL_C_INCLUDES
: 指定额外的头文件搜索路径。LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
-
库
LOCAL_SHARED_LIBRARIES
: 指定模块依赖的共享库。LOCAL_SHARED_LIBRARIES := libfoo libbar
LOCAL_STATIC_LIBRARIES
: 指定模块依赖的静态库。LOCAL_STATIC_LIBRARIES := libfoo_static
LOCAL_LDLIBS
: 链接器标志,通常用于链接系统库。LOCAL_LDLIBS := -llog -lz
-
输出类型
LOCAL_MODULE_CLASS
: 模块的类别,如SHARED_LIBRARIES
、STATIC_LIBRARIES
、EXECUTABLES
。LOCAL_MODULE_CLASS := SHARED_LIBRARIES
LOCAL_MODULE_SUFFIX
: 模块的文件扩展名。LOCAL_MODULE_SUFFIX := .so
-
路径和文件
LOCAL_PATH
: 当前目录的路径,通常在每个Android.mk
文件的开头定义。LOCAL_PATH := $(call my-dir)
LOCAL_SRC_FILES
: 源文件路径。LOCAL_SRC_FILES := $(LOCAL_PATH)/src/main.c
-
编译选项
LOCAL_ARM_MODE
: 指定 ARM 模式(arm
或thumb
)。LOCAL_ARM_MODE := arm
LOCAL_MULTILIB
: 指定多库模式(both
、32
、64
)。LOCAL_MULTILIB := both
-
清理变量
include $(CLEAR_VARS)
: 清理所有本地变量,以便重新定义一个新的模块。include $(CLEAR_VARS)
-
构建规则
include $(BUILD_SHARED_LIBRARY)
: 构建一个共享库。include $(BUILD_SHARED_LIBRARY)
include $(BUILD_STATIC_LIBRARY)
: 构建一个静态库。include $(BUILD_STATIC_LIBRARY)
include $(BUILD_EXECUTABLE)
: 构建一个可执行文件。include $(BUILD_EXECUTABLE)
-
预构建模块
include $(PREBUILT_SHARED_LIBRARY)
: 包含预构建的共享库。深色版本-
include $(PREBUILT_STATIC_LIBRARY)
示例 Android.mk
文件
以下是一个完整的 Android.mk
文件示例,展示了如何定义一个共享库模块:
# 指定当前目录
LOCAL_PATH := $(call my-dir)
# 清理所有本地变量
include $(CLEAR_VARS)
# 模块名称
LOCAL_MODULE := mylib
# 源文件列表
LOCAL_SRC_FILES := src/myfunc.c src/main.c
# 头文件搜索路径
LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
# C 编译器标志
LOCAL_CFLAGS := -Wall -Wextra
# 链接器标志
LOCAL_LDLIBS := -llog -lz
# 依赖的共享库
LOCAL_SHARED_LIBRARIES := libfoo libbar
# 构建一个共享库
include $(BUILD_SHARED_LIBRARY)
总结
Android.mk
文件通过一系列变量来定义模块的属性和依赖关系。