zoukankan      html  css  js  c++  java
  • Android.mk遍历子目录所有文件

    Android.mk遍历子目录所有文件

    1.  
      define all-cpp-files-under
    2.  
      $(patsubst ./%,%,
    3.  
      $(shell cd $(LOCAL_PATH) ;
    4.  
      find $(1) -name "*.cpp" -and -not -name ".*" -and -not -name "CCEditBoxImplWindow.cpp")
    5.  
      )
    6.  
      endef
    7.  
       
    8.  
      define all-subdir-cpp-files
    9.  
      $(call all-cpp-files-under,.)
    10.  
      endef
    11.  
       
    12.  
      LOCAL_SRC_FILES := $(call all-subdir-cpp-files)

    使用这个方法可以遍历子目录所有.cpp文件,替换find的参数可以实现遍历和过滤任意文件。

    Android.mk编写变得非常简洁和方便,无需再维护文件列表了。

    另附一个更加简单的宏,可以实现遍历一个目录下的所有文件(但是不会递归调用)

    LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/../*.c)

    通过wildcard可以进行文件遍历,如果是单目录结构,通过这个同样可以达到非常简洁的效果。如果是c++代码的话(*.cpp文件),需要使用下面的方式,否则可能找不到文件:
    1.  
      FILE_LIST := $(wildcard $(LOCAL_PATH)/../*.cpp)
    2.  
      LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

    加强版本(遍历所有文件,但是忽略某一个目录的文件)

    1.  
      define all-cpp-files-under
    2.  
      $(patsubst ./%,%,
    3.  
      $(shell cd $(LOCAL_PATH) ;
    4.  
      find $(1) -name LogicLayer -prune -o -name "*.cpp" -and -not -name ".*")
    5.  
      )
    6.  
      endef
    通过-prune可以指定忽略 "LogicLayer"这个目录
  • 相关阅读:
    [NOI2014]动物园 题解(预览)
    CF1200E 题解
    KMP算法略解
    [EER2]谔运算 口胡
    CF504E Misha and LCP on Tree 题解
    长链剖分 解 k级祖先问题
    双哈希模板
    Luogu P5333 [JSOI2019]神经网络
    UOJ449 【集训队作业2018】喂鸽子
    LOJ6503 「雅礼集训 2018 Day4」Magic
  • 原文地址:https://www.cnblogs.com/adong7639/p/11350055.html
Copyright © 2011-2022 走看看