美文网首页
Android.mk 遍历

Android.mk 遍历

作者: juket | 来源:发表于2016-12-29 11:45 被阅读0次

    android.mk

    在mac和windows下多目录 文件/目录遍历

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    $(call import-add-path,$(LOCAL_PATH)/../../../cocos2d)
    $(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/external)
    $(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos)
    $(call import-add-path,$(LOCAL_PATH)/../../../cocos2d/cocos/audio/include)
    ###############################################################################
    #mac环境 注释掉下面这行
    IS_WINDOWS := true
    
    LOCAL_MODULE := MyGame_shared
    
    LOCAL_MODULE_FILENAME := libcocos2dcpp
    ###############################################################################
    # 配置源文件目录和源文件后缀名
    MY_FILES_PATH  :=  $(LOCAL_PATH) \
                       $(LOCAL_PATH)/../../../Classes
    MY_FILES_SUFFIX := %.cpp %.c
    
    # 遍历目录及子目录的函数
    define walk
        $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
    endef
    
    # 去除字串的重复单词
    define uniq =
      $(eval seen :=)
      $(foreach _,$1,$(if $(filter $_,${seen}),,$(eval seen += $_)))
      ${seen}
    endef
    
    # 遍历Jni和Classes目录
    ALLFILES := $(foreach src_path,$(MY_FILES_PATH), $(call walk,$(src_path),*.*) )
    #$(warning ALLFILES $(ALLFILES))
    # 从所有文件中提取出所有.c和.cpp文件
    FILE_LIST  := $(filter $(MY_FILES_SUFFIX),$(ALLFILES))
    LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
    $(warning LOCAL_SRC_FILES= $(LOCAL_SRC_FILES))
    ###############################################################################
    ifdef IS_WINDOWS
        # windows递归遍历获取所有目录
        MY_ALL_DIRS := $(dir $(foreach src_path,$(MY_FILES_PATH), $(call walk,$(src_path),*/) ) )
        MY_ALL_DIRS := $(call uniq,$(MY_ALL_DIRS))
        LOCAL_C_INCLUDES := $(MY_ALL_DIRS)
    else
        # mac获取所有目录
        FILE_INCLUDES := $(shell find $(LOCAL_PATH)/../../../Classes -type d)
        LOCAL_C_INCLUDES := $(FILE_INCLUDES)
    endif
    $(warning LOCAL_C_INCLUDES= $(LOCAL_C_INCLUDES))
    ###############################################################################
    

    相关文章

      网友评论

          本文标题:Android.mk 遍历

          本文链接:https://www.haomeiwen.com/subject/punuvttx.html