用cocos2d-x开发Android游戏时,需要在Android.mk文件中,为LOCAL_SRC_FILES变量指定要编译的源代码,以及为LOCAL_C_INCLUDES变量指定头文件。当项目文件越来越多时,这种手动修改很浪费时间。好在Android.mk其实就是一个makefile,我们可以借助makefile语法来自动完成这部分工作。
使用外部命令
最简单的方式就是调用shell外部命令。首先我们指定要搜索的源文件根目录,设为SRC_ROOT这个变量。LOCAL_C_INCLUDES变量直接就是用find -type d命令去搜索根目录下的目录。LOCAL_SRC_FILES稍微复杂一些,首先我们先用find -type f得到所有的普通文件路径,再指定源代码文件名的匹配模式(例如我用的是c++,所以我指定了变量SRC_SUFFIX存放一般c++源代码文件的后缀名),用filter命令筛选出所有的源代码文件路径。
完整的代码如下:
# WARNING: Shell command is used, it is only works on a UNIX-like OS.
# Replace it with Makefile rules if you want to run on Windows.
SRC_SUFFIX := *.cpp *.c
SRC_ROOT := $(LOCAL_PATH)/../../Classes
ALL_FILES := $(shell find $(SRC_ROOT) -type f)
SRC_FILES := $(filter $(subst *,%,$(SRC_SUFFIX)),$(ALL_FILES))
LOCAL_SRC_FILES := hellocpp/