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的參數能夠實現遍歷和過濾任意文件。javascript

Android.mk編寫變得很是簡潔和方便,無需再維護文件列表了。html

另附一個更加簡單的宏,能夠實現遍歷一個目錄下的全部文件(可是不會遞歸調用)java

 

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)/%=%)

 

增強版本(遍歷全部文件,可是忽略某一個目錄的文件)c++

 

  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"這個目錄
相關文章
相關標籤/搜索