Android makefile

示例
    /** Android.mk文件必须从这一行定义开始,my-dir宏是build系统自带的函数,返回当前目录 */
    LOCAL_PATH := $(call my-dir)
    /** CLEAR_VARS是build系统自带的变量,指示makefile脚本清除所有LOCAL_XXX变量,除了LOCAL_PATH */
    include $(CLEAR_VARS)
    /** LOCAL_MODULE变量必须被定义以区分模块,所以名字必须是唯一的且不能包含任何空白,build系统会据此自动生成Lib文件名,比如,libhello-jni.so */
    LOCAL_MODULE := hello-jni
    /** LOCAL_SRC_FILES变量必须包含C/C++的源代码列表,不要列出头文件和include文件,因为build系统会自动检查每个文件的依赖 */
    LOCAL_SRC_FILES := hello-jni.c
    /** BUILD_SHARED_LIBRARY是build系统自带的变量,指示makefile脚本收集自最近一次CLEAR_VARS之后我们定义的所有LOCAL_XXX变量,并且指示生成的是Shared Library。与之相对的变量是BUILD_STATIC_LIBRARY */
    include $(BUILD_SHARED_LIBRARY)
    NOTE:以LOCAL_、PRIVATE_、NDK_、APP_开头的变量以及小写字母的变量时build系统的保留字,建议使用MY_<prefix>来定义自己的变量。

NDK宏函数
    调用:$(call <function>)
    my-dir:返回当前Android.mk文件所在的目录
    all-subdir-makefiles:返回在当前my-dir的所有子目录中的Android.mk文件的列表
    this-makefile:返回当前Android.mk的路径
    parent-makefile:返回上一层Android.mk的路径
    grand-parent-makefile:

模块描述变量
    LOCAL_PATH:当前基准路径
    LOCAL_MODULE:模块名称,必须唯一
    LOCAL_SRC_FILES:构建模块的源文件列表
    LOCAL_CPP_EXTENSION:C++文件扩展名,默认为.cpp
    LOCAL_C_INCLUDES:相对于NDK根路径的C include文件列表
    LOCAL_CFLAGS:C和C++的编译标志
    LOCAL_CXXFLAGS:LOCAL_CPPFLAGS的别名
    LOCAL_CPPFLAGS:C++的编译标志
    LOCAL_STATIC_LIBRARIES:链接的static libraries列表,仅对shared library有效
    LOCAL_SHARED_LIBRARIES:运行时依赖的shared libraries列表
    LOCAL_LDLIBS:额外的连接标志,比如链接系统库文件libz.o,则LOCAL_LDLIBS:=-lz
    LOCAL_ALLOW_UNDEFINED_SYMBOLS:允许没有定义的符号
    LOCAL_ARM_MODE、LOCAL_ARM_NEON、LOCAL_DISABLE_NO_EXECUTE看不懂

posted on 2011-03-14 18:52  爱吃草莓的维尼  阅读(1165)  评论(0编辑  收藏  举报

导航