Android.mk 文件语法规范
2010-07-20 13:26:00 来源:WEB开发网endif
LOCAL_SRC_FILES += $(MY_SOURCES)
1. GNU Make 变量
这些GNU Make 变量在你的Android.mk文件解析之前,就由编译系统定义好了。注意在某些情况下,NDK可能分析Android.mk几次,每一次某些变量的定义会有不同。
(1) CLEAR_VARS: 指向一个编译脚本,几乎所有未定义的LOCAL_XXX变量都在"Module-description"节中列出。你必须在开始一个新模块之前包含这个脚本。include $(CLEAR_VARS)
(2) BUILD_SHARED_LIBRARY: 指向编译脚本,收集所有的你在LOCAL_XXX变量中提供的信息,并且决定如何把你列出的源代码文件编译成一个共享库。注意,你必须至少在包含这个文件之前定义LOCAL_MODULE和LOCAL_SRC_FILES,使用例子:
include $(BUILD_SHARED_LIBRARY) (注意这将生成一个名为lib$(LOCAL_MODULE).so的文件)
(3) BUILD_STATIC_LIBRARY: 一个BUILD_SHARED_LIBRARY变量用于编译一个静态库。静态库不会复制到你的project/packages中,但是能够用于编译共享库,(看下面描述的LOCAL_STATIC_LIBRARIES and LOCAL_STATIC_WHOLE_LIBRARIES)
使用例子:include $(BUILD_STATIC_LIBRARY) (注意,这将会生成一个名为lib$(LOCAL_MODULE).a的文件)。
(4) TARGET_ARCH: 目标CPU平台的名字, 和android开放源码中指定的那样。如果是arm,表示要生成ARM兼容的指令,与CPU架构的修订版无关。
(5) TARGET_PLATFORM: Android.mk解析的时候,目标Android平台的名字.详情可参考/development/ndk/docs/stable- apis.txt.
android-3 -> Official Android 1.5 system images
android-4 -> Official Android 1.6 system images
android-5 -> Official Android 2.0 system images
(6) TARGET_ARCH_ABI: 暂时只支持两个value,armeabi和armeabi-v7a。在现在的版本中一般把这两个值简单的定义为arm,通过android 平台内部对它重定义来获得更好的匹配。其他的ABI将在以后的NDK版本中介绍,它们会有不同的名字。注意所有基于ARM的ABI都会把 'TARGET_ARCH'定义成‘arm’,但是会有不同的‘TARGET_ARCH_ABI’
(7) TARGET_ABI: 目标平台和ABI的组合,它事实上被定义成$(TARGET_PLATFORM)-$(TARGET_ARCH_ABI) 在你想要在真实的设备中针对一个特别的目标系统进行测试时,会有用。在默认的情况下,它会是'android-3-arm'。
更多精彩
赞助商链接