2.4.1 Android.mk(5)
LOCAL_EXPORT_CFLAGS:该变量记录一组编译器标志,这些编译器标志会被添加到通过变量LOCAL_STATIC_LIBRARIES或LOCAL_SHARED_LIBRARIES使用本模块的其他模块的LOCAL_CFLAGS定义中。
- LOCAL_MODULE := avilib
- ...
- LOCAL_EXPORT_CFLAGS := − DENABLE_AUDIO
- ...
- LOCAL_MODULE := module1
- LOCAL_CFLAGS := − DDEBUG
- ...
- LOCAL_SHARED_LIBRARIES := avilib
编译器在构建module1时会以-DENABLE_AUDIO –DDEBUG标志执行。
LOCAL_EXPORT_CPPFLAGS:和LOCAL_EXPORT_CLAGS一样,但是它是C++特定代码编译器标志。
LOCAL_EXPORT_LDFLAGS:和LOCAL_EXPORT_CFLAGS一样,但用作链接器标志。
LOCAL_EXPORT_C_INCLUDES:该变量允许记录路径集,这些路径会被添加到通过变量LOCAL_STATIC_LIBRARIES或LOCAL_SHARED_LIBRARIES使用该模块的LOCAL_C_INCLUDES定义中。
LOCAL_SHORT_COMMANDS:对于有大量资源或独立的静态/共享库的模块,该变量应该被设置为true。诸如Windows之类的操作系统只允许命令行最多输入8 191个字符;该变量通过分解构建命令使其长度小于8 191个字符。在较小的模块中不推荐使用该方法,因为使用它会让构建过程变慢。
LOCAL_FILTER_ASM:该变量定义了用于过滤来自LOCAL_SRC_FILES变量的装配文件的应用程序。
9. 其他的构建系统函数宏
本节概括了Android NDK构建系统支持的其他函数宏。
all-subdir-makefiles:返回当前目录的所有子目录下的Android.mk构建文件列表。例如,调用以下命令可以将子目录下的所有Android.mk文件包含在构建过程中:
- include $(call all-subdir-makefiles)
this-makefile:返回当前Android.mk构建文件的路径。
parent-makefile:返回包含当前构建文件的父Android.mk构建文件的路径。
grand-parent-makefile:和parent-makefile一样但用于祖父目录。
10. 定义新变量
开发人员可以定义其他变量来简化他们的构建文件。以LOCAL_和NDK_前缀开头的名称预留给Android NDK构建系统使用。建议开发人员定义的变量以MY_开头,如程序清单2-9所示。
程序清单2-9 表示开发人员定义的中间变量的使用方法的Android.mk文件
- ...
- MY_SRC_FILES := avilib.c platform_posix.c
- LOCAL_SRC_FILES := $(addprefix avilib/, $(MY_SRC_FILES))
- ...
11. 条件操作
Android.mk构建文件也可以包含关于这些变量的条件操作,例如:在每个体系结构中包含一个不同的源文件集,如程序清单2-10所示。
程序清单2-10 包含条件操作的构建文件Android.mk
- ...
- ifeq ($(TARGET_ARCH),arm)
- LOCAL_SRC_FILES + = armonly.c
- else
- LOCAL_SRC_FILES + = generic.c
- endif
- ...
喜欢的朋友可以添加我们的微信账号:
51CTO读书频道二维码

51CTO读书频道活动讨论群:342347198