Cocos2dx Android.mk
用之前写过的Android.mk为例(见下面)来讲:
Vuforia-prebuilt模块
第一个模块Vuforia-prebuilt,是将已经编译好的.so以预编译库的形式添加进该工程,模块名为Vuforia-prebuilt,需要注意的是一个模块只能添加一个.so.
LOCAL_EXPORT_C_INCLUDES 是头文件的路径,包含头文件的路径同时,并导出这个路径,意思就是说,如果有个名为A模块需要以LOCAL_STATIC_LIBRARIES的形式添加这个B模块,A模块就不需要添加这个B模块的include的路径,因为B模块的include路径已经以LOCAL_EXPORT_C_INCLUDES的形式一并导出了
OpenCV-prebuilt模块
第二个模块OpenCV-prebuilt,同上
cocos2dcpp_shared模块
第三个模块cocos2dcpp_shared,这是汇总了其他模块的模块,讲到笔记的重点了,就是import-add-path,这是添加NDK_MODULE_PATH的意思,NDK编译的时候,需要指定的模块路径,当Android.mk中使用**$(call import-module, XXX),函数引入外部模块时会用到,用来指示该去哪里找这个文件,比如这个cocos2dcpp_shared中,有个$(call import-add-path, $(LOCAL_PATH)/../../../Classes)**,如果我们在Classes/FaceTracker文件下有个Android.mk文件,并且该文件里有个mytrack_static名字的模块,那么我们只需要在当前Android.mk(并非Classes目录下的)文件里的末端加上一句$(call import-module, FaceTracker),那么它就会在FaceTracker目录(这个目录就是相对Classes目录的)下去找含有mytrack_static模块的Android.mk,并编译。
NOTES:当然为了简洁,我在笔记里就直接用相对cocos2d目录来写FaceTracker目录里的模块,也就是最后一句是$(call import-module, ../Classes/FaceTracker)而不是$(call import-module, FaceTracker)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := Vuforia-prebuilt
LOCAL_SRC_FILES := thirdpartylibs/libVuforia.so
#LOCAL_C_INCLUDES := E:/Libraries/vuforia-sdk-android-5-5-9/build/include
LOCAL_EXPORT_C_INCLUDES := E:/Libraries/vuforia-sdk-android-5-5-9/build/include
include $(PREBUILT_SHARED_LIBRARY)
#include $(CLEAR_VARS)
#LOCAL_MODULE := OpenCV-prebuilt
#LOCAL_SRC_FILES := thirdpartylibs/libopencv_java.so
##LOCAL_EXPORT_C_INCLUDES := E:/Libraries/opencv2410/build/include
#include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
#$(call import-add-path,$(LOCAL_PATH)/../../../Classes)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../../Classes/AppDelegate.cpp \
../../../Classes/HelloWorldScene.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../Classes \
$(LOCAL_PATH)../../../Classes/FaceTracker
# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END
LOCAL_STATIC_LIBRARIES := cocos2dx_static
LOCAL_STATIC_LIBRARIES += mytrack_static
LOCAL_SHARED_LIBRARIES += Vuforia-prebuilt
#LOCAL_SHARED_LIBRARIES += OpenCV-prebuilt
# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
$(call import-module,../Classes/FaceTracker)
# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END