Cocos2dx-Android 之Makefile通用高级写法
2015-08-18 16:31
447 查看
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
###############################################################################
##########################手动遍历文件夹以及子目录##############################
##########################这是第一种很麻烦的写法################################
#XLOCAL_C_INCLUDES := \
# $(LOCAL_PATH)/hellocpp \
# $(LOCAL_PATH)/../../Classes
#
#XLOCAL_CPPS := \
# $(wildcard $(LOCAL_PATH)/hellocpp/*.cpp) \
# $(wildcard $(LOCAL_PATH)/../../Classes/*.c) \
# $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
#
#XLOCAL_SRC_FILES := $(XLOCAL_CPPS:$(LOCAL_PATH)/%=%)
#
#LOCAL_C_INCLUDES += $(XLOCAL_C_INCLUDES)
#LOCAL_SRC_FILES := $(XLOCAL_SRC_FILES)
###############################################################################
###############################################################################
##########################自动遍历文件夹以及子目录##############################
##########################这是第二种比较方便的写法##############################
# 遍历目录及子目录的函数
#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_PATH)/../../Classes/LogClass
###############################################################################
###############################################################################
##########################自动遍历文件夹以及子目录(源文件和头文件)################
##########################这是第三种之相对最方便的写法###########################
# 配置自己的源文件目录和源文件后缀名
APP_FILES_PATH := $(LOCAL_PATH) \
$(LOCAL_PATH)/../../Classes
APP_FILES_SUFFIX := %.cpp %.c
# 递归遍历目录下的所有的文件
rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
# 获取相应的源文件
APP_ALL_FILES := $(foreach src_path,$(APP_FILES_PATH), $(call rwildcard,$(src_path),*.*) )
APP_ALL_FILES := $(APP_ALL_FILES:$(APP_CPP_PATH)/./%=$(APP_CPP_PATH)%)
APP_SRC_LIST := $(filter $(APP_FILES_SUFFIX),$(APP_ALL_FILES))
APP_SRC_LIST := $(APP_SRC_LIST:$(LOCAL_PATH)/%=%)
# 去除字串的重复单词
define uniq =
$(eval seen :=)
$(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_)))
${seen}
endef
# 递归遍历获取所有目录
APP_ALL_DIRS := $(dir $(foreach src_path,$(APP_FILES_PATH), $(call rwildcard,$(src_path),*/) ) )
APP_ALL_DIRS := $(call uniq,$(APP_ALL_DIRS))
# 赋值给NDK编译系统
LOCAL_SRC_FILES := $(APP_SRC_LIST)
LOCAL_C_INCLUDES := $(APP_ALL_DIRS)
###############################################################################
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
$(call import-module,audio/android)
$(call import-module,Box2D)
$(call import-module,editor-support/cocosbuilder)
$(call import-module,editor-support/spine)
$(call import-module,editor-support/cocostudio)
$(call import-module,network)
$(call import-module,extensions)
include $(CLEAR_VARS)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
###############################################################################
##########################手动遍历文件夹以及子目录##############################
##########################这是第一种很麻烦的写法################################
#XLOCAL_C_INCLUDES := \
# $(LOCAL_PATH)/hellocpp \
# $(LOCAL_PATH)/../../Classes
#
#XLOCAL_CPPS := \
# $(wildcard $(LOCAL_PATH)/hellocpp/*.cpp) \
# $(wildcard $(LOCAL_PATH)/../../Classes/*.c) \
# $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
#
#XLOCAL_SRC_FILES := $(XLOCAL_CPPS:$(LOCAL_PATH)/%=%)
#
#LOCAL_C_INCLUDES += $(XLOCAL_C_INCLUDES)
#LOCAL_SRC_FILES := $(XLOCAL_SRC_FILES)
###############################################################################
###############################################################################
##########################自动遍历文件夹以及子目录##############################
##########################这是第二种比较方便的写法##############################
# 遍历目录及子目录的函数
#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_PATH)/../../Classes/LogClass
###############################################################################
###############################################################################
##########################自动遍历文件夹以及子目录(源文件和头文件)################
##########################这是第三种之相对最方便的写法###########################
# 配置自己的源文件目录和源文件后缀名
APP_FILES_PATH := $(LOCAL_PATH) \
$(LOCAL_PATH)/../../Classes
APP_FILES_SUFFIX := %.cpp %.c
# 递归遍历目录下的所有的文件
rwildcard=$(wildcard $1$2) $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2))
# 获取相应的源文件
APP_ALL_FILES := $(foreach src_path,$(APP_FILES_PATH), $(call rwildcard,$(src_path),*.*) )
APP_ALL_FILES := $(APP_ALL_FILES:$(APP_CPP_PATH)/./%=$(APP_CPP_PATH)%)
APP_SRC_LIST := $(filter $(APP_FILES_SUFFIX),$(APP_ALL_FILES))
APP_SRC_LIST := $(APP_SRC_LIST:$(LOCAL_PATH)/%=%)
# 去除字串的重复单词
define uniq =
$(eval seen :=)
$(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_)))
${seen}
endef
# 递归遍历获取所有目录
APP_ALL_DIRS := $(dir $(foreach src_path,$(APP_FILES_PATH), $(call rwildcard,$(src_path),*/) ) )
APP_ALL_DIRS := $(call uniq,$(APP_ALL_DIRS))
# 赋值给NDK编译系统
LOCAL_SRC_FILES := $(APP_SRC_LIST)
LOCAL_C_INCLUDES := $(APP_ALL_DIRS)
###############################################################################
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
$(call import-module,audio/android)
$(call import-module,Box2D)
$(call import-module,editor-support/cocosbuilder)
$(call import-module,editor-support/spine)
$(call import-module,editor-support/cocostudio)
$(call import-module,network)
$(call import-module,extensions)
相关文章推荐
- C#通用邮件发送类分享
- Ruby中require、load、include、extend的区别介绍
- C#获取文件夹及文件的大小与占用空间的方法
- C#、ASP.NET通用扩展工具类之TypeParse
- 用批处理实现的创建带日期的文件夹的代码
- win2003文件夹权限设置脚本代码
- win2003 服务器 文件夹 权限分配
- PowerShell统计文件夹下文件个数的方法
- C#、ASP.NET通用扩展工具类之LogicSugar
- C#监控文件夹并自动给图片文件打水印的方法
- VBS 显示“选择文件或文件夹”对话框的代码
- vbscript include的办法实现代码第1/2页
- C#实现获取文件夹大小的方法
- C#递归实现显示文件夹及所有文件并计算其大小的方法
- PHP脚本中include文件出错解决方法
- Flex include和import ActionScript代码
- set_include_path在win和linux下的区别
- BAT批处理之文件与文件夹操作代码(附xcopy命令详解)
- vbs 列出该目录下所有文件和文件夹的类型,大小,和所有者
- asp修改文件和文件夹的名字的代码