Android.mk遍歷子目錄所有文件


轉:http://blog.csdn.net/langresser_king/article/details/8272736

define all-cpp-files-under
$(patsubst ./%,%, \
  $(shell cd $(LOCAL_PATH) ; \
          find $(1) -name "*.cpp" -and -not -name ".*" -and -not -name "CCEditBoxImplWindow.cpp") \
 )
endef

define all-subdir-cpp-files
$(call all-cpp-files-under,.)
endef
LOCAL_SRC_FILES := $(call all-subdir-cpp-files)


使用這個方法可以遍歷子目錄所有.cpp文件,替換find的參數可以實現遍歷和過濾任意文件。

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

另附一個更加簡單的宏,可以實現遍歷一個目錄下的所有文件(但是不會遞歸調用)

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

通過wildcard可以進行文件遍歷,如果是單目錄結構,通過這個同樣可以達到非常簡潔的效果。如果是c++代碼的話(*.cpp文件),需要使用下面的方式,否則可能找不到文件:

FILE_LIST := $(wildcard $(LOCAL_PATH)/../*.cpp)
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

 

加強版本(遍歷所有文件,但是忽略某一個目錄的文件)

define all-cpp-files-under
$(patsubst ./%,%, \
  $(shell cd $(LOCAL_PATH) ; \
          find $(1) -name LogicLayer -prune -o -name "*.cpp" -and -not -name ".*") \
 )
endef

 

通過-prune可以指定忽略 "LogicLayer"這個目錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM