如何自动设好 Android.mk 的 LOCAL

2024-11-30 05:35:46
推荐回答(2个)
回答(1):

 最简单的方式就是调用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/main.cpp
  LOCAL_SRC_FILES += $(SRC\_FILES:$(LOCAL_PATH)/%=%)

  SRC_DIRS := $(shell find $(SRC_ROOT) -type d)
  LOCAL_C_INCLUDES := $(SRC_DIRS)

回答(2):

用Cocos2d-x开发Android游戏时,需要在Android.mk文件中,为LOCAL_SRC_FILES变量指定要编译的源代码,以及为LOCAL_C_INCLUDES变量指定头文件。当项目文件越来越多时,这种手动修改很浪费时间。好在Android.mk其实就是一个makefile,我们可以借助makefile语法来自动完成这部分工作。