- 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)
使用這個(gè)方法可以遍歷子目錄所有.cpp文件,替換find的參數可以實(shí)現遍歷和過(guò)濾任意文件。
Android.mk編寫(xiě)變得非常簡(jiǎn)潔和方便,無(wú)需再維護文件列表了。
另附一個(gè)更加簡(jiǎn)單的宏,可以實(shí)現遍歷一個(gè)目錄下的所有文件(但是不會(huì )遞歸調用)
- LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/../*.c)
通過(guò)wildcard可以進(jìn)行文件遍歷,如果是單目錄結構,通過(guò)這個(gè)同樣可以達到非常簡(jiǎn)潔的效果。如果是c++代碼的話(huà)(*.cpp文件),需要使用下面的方式,否則可能找不到文件:
- FILE_LIST := $(wildcard $(LOCAL_PATH)/../*.cpp)
- LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
加強版本(遍歷所有文件,但是忽略某一個(gè)目錄的文件)
- define all-cpp-files-under
- $(patsubst ./%,%, \
- $(shell cd $(LOCAL_PATH) ; \
- find $(1) -name LogicLayer -prune -o -name "*.cpp" -and -not -name ".*") \
- )
- endef
通過(guò)-prune可以指定忽略 "LogicLayer"這個(gè)目錄
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。