cocos2d-x 3.0 android mk文件 之 本身主动遍历*.cpp文件

2021年09月15日 阅读数:1
这篇文章主要向大家介绍cocos2d-x 3.0 android mk文件 之 本身主动遍历*.cpp文件,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

还记得上一篇android mk 文件的写法吗?传送门android

咱们需要手动去加入 cpp文件。假设cpp一多,那不是要累死?ide

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/ClipingNodeLayer.cpp\
                   ../../Classes/MainScene.cpp\
                   ../../Classes/MenuTab.cpp


LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static          # 加入 cocos_extension 静态库
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static		# 加入 cocostudio 静态库


include $(BUILD_SHARED_LIBRARY)

$(call import-module,2d)
$(call import-module,audio/android)
$(call import-module,Box2D)
$(call import-module,extensions)				# 导入 extensions 模块
$(call import-module,editor-support/cocostudio)			# 导入 cocostudio 模块

  看了网上不少大神的博客,才发现还可以这样子本身主动遍历cpp。比方上面这个mk文件。仅仅需要把函数


LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/ClipingNodeLayer.cpp\
                   ../../Classes/MainScene.cpp\
                   ../../Classes/MenuTab.cpp

改成

# 遍历文件夹及子文件夹的函数
define walk
    $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef

# 遍历Classes文件夹
ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)
                   
FILE_LIST := hellocpp/main.cpp
# 从所有文件里提取出所有.cpp文件
FILE_LIST += $(filter %.cpp, $(ALLFILES))

LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

其它部分不变。

恩而后便可了。spa

ip


改完以后完整android mk 文件例如如下:博客


LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := cocos2dcpp_shared

LOCAL_MODULE_FILENAME := libcocos2dcpp

# 遍历文件夹及子文件夹的函数
define walk
    $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef

# 遍历Classes文件夹
ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)
                   
FILE_LIST := hellocpp/main.cpp
# 从所有文件里提取出所有.cpp文件
FILE_LIST += $(filter %.cpp, $(ALLFILES))

LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)


LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static  # 加入 cocos_extension 静态库
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static		# 加入 cocostudio 静态库


include $(BUILD_SHARED_LIBRARY)

$(call import-module,2d)
$(call import-module,audio/android)
$(call import-module,Box2D)
$(call import-module,extensions)						# 导入 extensions 模块
$(call import-module,editor-support/cocostudio)			# 导入 cocostudio 模块