NDK系统参数详解:
LOCAL_PATH := $(call my-dir)
指定LOCAL_PATH变量,用于查找源文件,上面的语句的意思是将LOCAL_PATH变量定义成当前文件所在目录路径, my-dir是编译系统提供的宏函数,被用来获取当前的目录。
$(call import-add-path,$(LOCAL_PATH)/../../../../)
import-add-path用来添加路径到 NDK_MODULE_PATH 环境变量中。
include $(CLEAR_VARS)
CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除除LOCAL_PATH以外的所有LOCAL_XXX变量,如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_SHARED_LIBRARIES等. 一个Android.mk中可以定义多个编译模块,每个编译模块都是以include $(CLEAR_VARS)开始,以include $(BUILD_XXX)结束。
LOCAL_MODULE := cocos2dcpp_shared
每一个android.mk文件中都必须定义一个模块标示 LOCAL_MODULE , 这个名字必须是唯一的并且不包含任何的空格,编译系统将自动的修改生成文件的前缀和后缀,如一个模块为foo共享库将被改为libfoo.so,如果你的模块名为libfoo,编译系统生成的文件为 libfoo.so, 而不会去再增加前缀,当你使用的时候,android平台会自动识别
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_MODULE_FILENAME指定模块文件名
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp
LOCAL_SRC_FILES指定本模块的c/c++源文件(.c .cpp .cc),各文件之间以空格分隔,\为续行符。
LOCAL_CPP_EXTENSION := .cc .cpp
默认的c++文件扩展名是.cpp, LOCAL_CPP_EXTENSION可以用来指定不同类型的扩展名,不要忘了前面的点
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes/Game
LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes/Lobby
LOCAL_C_INCLUDES参数指定本模块包含的头文件路径,多个路径之间以空格分隔
LOCAL_WHOLE_STATIC_LIBRARIES += cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES参数用来指定本模块依赖的所有静态库模块(连接静态连接库的时候不会移除"daed code",何谓dead code呢,就是调用者模块永远都不会用到的代码段和变量)
LOCAL_STATIC_LIBRARIES += cocos2dx_static
LOCAL_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_ STATIC_LIBRARIES参数用来指定本模块依赖的所有静态库模块(连接静态连接库的时候会移除"daed code",何谓dead code呢,就是调用者模块永远都不会用到的代码段和变量)
include $(BUILD_STATIC_LIBRARY) 表示编译成静态库。
include $(BUILD_SHARED_LIBRARY) 表示编译成动态库(即共享库)。
include $(BUILD_EXECUTABLE) 表示编译成可执行程序。
include $(PREBUILT_STATIC_LIBRARY) 表示定义一个预编译好的静态库模块。
include $(PREBUILT_SHARED_LIBRARY) 表示定义一个预编译好的动态库模块。
$(call import-module,cocos2dx)导入外部模块(此处表示导入cocos2dx模块,cocos2dx为模块名LOCAL_MODULE,注意该命令搜索外部模块的路径在NDK_MODULE_PATH中指定或通过$(call import-add-path,$(LOCAL_PATH)/../../)命令导入)。
编写预编译静态库Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libxml2_static
LOCAL_SRC_FILES := $(LOCAL_PATH)/lib/android/libxml2.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)
编写预编译动态库Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libYvImSdk
LOCAL_SRC_FILES := $(LOCAL_PATH)/libs/$(TARGET_ARCH_ABI)/libYvImSdk.so
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_SHARED_LIBRARY)