标签:
你能够在每个Android.mk文件里定义一个或多个模块,
你也能够在几个模块中使用同一个源码文件。
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := XXX LOCAL_FILES := XXX.cpp ... include $(BUILD_XXX)
my-dir是一个有宏函数。有编译系统提供。返回当前路径。即包括Android.mk的文件文件夹。
include $( CLEAR_VARS)
CLEAR_VARS变量由编译提供。指向一个GNU Makefile,由它负责清理LOCAL_xxx变量(不清理LOCAL_PATH)。
由于全部的编译控制文件由同一个GNU Make解析和运行。其变量是全局的,所以清理后才干避免相互影响。
LOCAL_MODULE := XXX
LOCAL_MODULE是模块名,必须在include $(BUILD_XXXXX)之前,定义这个变量,唯一且不包括空格。
LOCAL_SRC_FILES := XXX.cpp
源文件列表。必须包括将要打包如模块的C/C++ 源代码。
不必列出头文件,编译系统会自己主动找出依赖头文件。
缺省的C++源代码的扩展名为.cpp. 也能够改动。通过LOCAL_CPP_EXTENSION。
include $(XXX)
负责收集自从上次调用 include $(CLEAR_VARS) 后的全部LOCAL_XXX信息。并决定编译为什么。
仅仅介绍经常使用的两个:
BUILD_STATIC_LIBRARY : 编译为静态库,生成一个名为lib$(LOCAL_MODULE).so的文件。
BUILD_SHARED_LIBRARY :编译为动态库,生成一个名为lib$(LOCAL_MODULE).a的文件。
LOCAL_C_INCLUDES := XXX
指定包括路径,编译时将会把这些文件夹附上。
比如:
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
$(LOCAL_PATH)/../../Classes/SdkController \
$(LOCAL_PATH)/../../Classes/SdkController/android \
$(LOCAL_PATH)/../../Classes/ShareController \
$(LOCAL_PATH)/../../../../../cocos2dx/platform/android/jni
LOCAL_CFLAGS := XXX, LOCAL_CPPFLAGS := XXX
用来在编译C/C++时,附加编译选项。
比如:
LOCAL_CFLAGS := \
-Wno-multichar \
-DAndroid \
-DLIBDIR="c" \
-DBUILDING_LIBICONV \
-DIN_LIBRARY
LOCAL_WHOLE_STATIC_LIBRARIES := XXX
静态库全链接,编译器会将静态库完整链接而不会进行删减优化。
不同于LOCAL_STATIC_LIBRARIES,类似于使用--whole-archive。
比如:
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_lua_static
import-module:
同意寻找并导入其他modules到本Android.mk中来。它会从NDK_MODULE_PATH寻找指定的模块名。
$(call import-module,<name>)
比如:
$(call import-module,cocos2dx)
$(call import-module,CocosDenshion/android)
$(call import-module,scripting/lua/proj.android)
标签:
原文地址:http://www.cnblogs.com/mengfanrong/p/5071352.html