2017-03-21 32 views
0

你好,我在linux上有一個非常大的makefile,我正在減少它。對於這樣的任務,我想,以減少變量聲明部分(例如小波紋管)對於makefile文件裏面

DIRHEA := include/ 

DIRHEA_MANAGERS := $(DIRHEA)managers/ 
DIRHEA_ENTITIES := $(DIRHEA)entities/ 

CXXFLAGS := -I$(DIRHEA_MANAGERS) -I$(DIRHEA_ENTITIES) 

試圖做一些事情,在下面的方式工作,

for dir in $(DIRHEA)/*; do \ 
    if [[ -d $dir ]]; then \ 
     CXXFLAGS += -I$dir \ 
    fi; \ 
done 

尚未奏效。任何人都可以請建議我這樣做?

回答

1

首先得到該目錄的列表:

SUBDIRS := $(shell ls -p $(DIRHEA) | grep /) 

然後

CXXFLAGS := $(addprefix -I(DIRHEA), $(SUBDIRS)) 
+0

先生,感謝它的工作就像一個魅力 – gomezportillo

1

for這樣的循環是shell語法,而不是Makefile。您將需要使用shell的語法(POSIX兼容shell中的foo="${foo} bar")來連接字符串。