jni配置如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
MY_FILES_PATH := (LOCAL_PATH) \
(LOCAL_PATH)/…/…/Classes
$(LOCAL_PATH)/…/…/cocos2d/extensions
MY_FILES_SUFFIX := .cpp .c %m %mm
Make does not offer a recursive wildcard function, so here’s one:
rwildcard=$(wildcard $1$2) (foreach d,(wildcard 1*),(call rwildcard,$d/,$2))
Retrieve all source files in each dir recursively.
MY_ALL_FILES := (foreach src_path,(MY_FILES_PATH), (call rwildcard,(src_path),.) )
MY_ALL_FILES := (MY_ALL_FILES:(MY_CPP_PATH)/./=$(MY_CPP_PATH))
MY_SRC_LIST := (filter (MY_FILES_SUFFIX),(MY_ALL_FILES))
MY_SRC_LIST := (MY_SRC_LIST:$(LOCAL_PATH)/=)
helper function for remove duplicated words in string
define uniq =
(eval seen :=)
(foreach ,1,(if (filter ,{seen}),,(eval seen += _)))
{seen}
endef
Retrieve all directory recursively.
MY_ALL_DIRS := (dir (foreach src_path,(MY_FILES_PATH), (call rwildcard,(src_path),*/) ) ) MY_ALL_DIRS := (call uniq,$(MY_ALL_DIRS))
All done, just tell NDK build system.
LOCAL_SRC_FILES := (MY_SRC_LIST) LOCAL_C_INCLUDES := (MY_ALL_DIRS)
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
#LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
#LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
#LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
(call import-module,2d)
(call import-module,audio/android)
#(call import-module,Box2D)
#(call import-module,editor-support/cocostudio)
#$(call import-module,extensions)