mk语法随笔

来源:互联网 发布:微信oauth2.0 java 编辑:程序博客网 时间:2024/06/06 04:01

1.LOCAL_PATH:= $(call my-dir)

LOCAL_PATH:用于给出当前文件的路径。你必须在Android.mk的开头定义,这个变量不会被$(CLEAR_VARS)清除。

call my-dir:宏函数’my-dir’, 由编译系统提供,用于返回当前路径。


2.include $(CLEAR_VARS)

CLEAR_VARS:由编译系统提供((可以在 android 安装目录下的/build/core/config.mk 文件看到其定义,为 CLEAR_VARS:= $(BUILD_SYSTEM)/clear_vars.mk)),指定让GNU MAKEFILE为你清除许多LOCAL_XXX变量(例如 LOCAL_MODULE, LOCAL_SRC_FILES, LOCAL_STATIC_LIBRARIES, 等等...),除LOCAL_PATH 。这是必要的,因为所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的。

3.LOCAL_MODULE_TAGS := optional

LOCAL_MODULE_TAGS :=user eng tests optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
tests: 指该模块只在tests版本下才编译
optional:指该模块在所有版本下都编译

4.LOCAL_CPP_EXTENSION := .cc

这是一个可选变量,用来指定C++代码文件的扩展名,默认是'.cpp',但是你可以改变它,比如:LOCAL_CPP_EXTENSION := .cxx

5.LOCAL_SRC_FILES

这是要编译的源代码文件列表。只要列出要传递给编译器的文件,因为编译系统自动为你计算依赖。
注意源代码文件名称都是相对于LOCAL_PATH的,你可以使用路径部分,例如:
LOCAL_SRC_FILES := foo.c \
       toto/bar.c
注意:在生成文件中都要使用UNIX风格的斜杠(/).windows风格的反斜杠不会被正确的处理。

6.LOCAL_MODULE

这是你模块的名字,它必须是唯一的,而且不能包含空格。你必须在包含任一的$(BUILD_XXXX)脚本之前定义它。模块的名字决定了生成文件的名字,例如,如果一个一个共享库模块的名字是<foo>,那么生成文件的名字就是lib<foo>.so。但是,在你的NDK生成文件中(或者Android.mk或者Application.mk),你应该只涉及(引用)有正常名字的其他模块。

7.LOCAL_CFLAGS

可选的编译器选项,在编译C代码文件的时候使用。
这可能是有用的,指定一个附加的包含路径(相对于NDK的顶层目录),宏定义,或者编译选项。
0 0
原创粉丝点击