2
我有一個項目的目錄結構如下:遞歸搜索子目錄
Source-----------------
---Project1------------
-----------Project1_vA-
-----------Project1_vB-
---Project2------------
-----------Project2_vA-
-----------Project2_vB-
---Project3------------
-----------Project3_vA-
我試圖寫一個遞歸構建LIB makefile文件中所有子目錄:
DIRS := $(dir $(wildcard $(LOCAL_PATH)/*/));
$(info $(DIRS))
for item in $(DIRS); do \
$(info sublib) \
$(info $(item)) \
if [[ "$item" == "$LOCAL_PATH/glm/" || \
"$item" == "$LOCAL_PATH/common/" ]] \
then \
continue; \
fi \
SUBDIRS := $(dir $(wildcard $(item)/*/)) \
$(info $(SUBDIRS)) \
for subitem in $(SUBDIRS); do \
include $(CLEAR_VARS) \
$(info $(subitem)) \
LOCAL_MODULE := $(subitem) \ \
LOCAL_CFLAGS := -g -fexceptions \
LOCAL_ARM_MODE := arm \
LOCAL_SRC_FILES := $(subitem)/*.cpp \
$(subitem)/main.cpp \
LOCAL_SHARED_LIBRARIES := common \
LOCAL_LDLIBS := -llog -lGLESv2 \
include $(BUILD_SHARED_LIBRARY) \
done; \
done;
但什麼不對循環塊 - $(info $(item))
- 顯示空格。
$(info $(DIRS))
- 顯示"Source/Project1/ Source/Project2/ Source/Project3/;"
請幫助。
爲什麼不顯示空格?這就是通配符的工作方式,它返回與通配符操作匹配的空格分隔的路徑列表。假設'LOCAL_DIR'設置爲'Source',結果對我來說看起來很好。也許如果你告訴我們你期望的結果,我們可以建議你... – MadScientist
另外,'for'循環是一個shell循環;它在這樣的makefile中沒有地位。這個makefile,就像你在這裏抄錄的那樣,根本就不對。 – MadScientist
我想要爲每個子目錄(Project1_vA,Project1_vB ..)庫進行bild。爲此,我需要爲LOCAL_MODULE創建一個名爲「libProject1_vA」的唯一名稱。在bild時,我不知道子目錄的數量,所以我需要動態生成一個子目錄列表,併爲它們中的每一個生成一個庫。在第一個週期中,我想繞過所有的項目目錄。在第二個週期中,我想繞過項目的所有子目錄。 – user2881543