2012-11-21 42 views
1

我有,我想創建一個變量看起來像這樣一個問題的每一個條目的前面增加一個選項,GNU品牌:如何在列表

INCDIRS = -I dir0 -I dir1 -Idir2 -I dir3 ... -I dirN 

其中DIR1,... dirN是所有子目錄的一些基本目錄的名稱,base_dir

我將如何去建立這個變量?本來,我想我可以做到以下幾點,

INCDIRS = $(shell for x in `find base_dir -type -d -print`; do echo -I $x; done;) 

但這只是導致

INCDIRS = -I -I -I -I ... -I 

如果任何人都可以解釋如何做到這一點,或者解釋爲什麼我原來的命令了,它沒有輸出, 我將不勝感激。謝謝!

+0

*總是*用'--warn'運行make。然後你會被告知'Makefile:n:warning:undefined variable'x''。然後你會意識到'$ x'是通過make,_before_傳遞一個不正確的命令行到shell來擴展的(到沒有)。 (你應該說'......做echo -I $$ x ...'。) – bobbogo

回答

2

您在INCDIRS作業中有兩個錯誤。一個在find命令中。它應該是find -type d -print(或者只是find -type d;這裏-print是多餘的)。其他錯誤使用$x。你需要與其他$逃脫$

INCDIRS = $(shell for x in `find base_dir -type d -print`; do echo -I $$x; done;) 
+0

謝謝!固定它:) – martega

+0

嗨馬爾加,如果這可以解決您的問題,我認爲大衛值得您將他的答案標記爲已接受的答案。 –

2

你能先取得目錄列表,然後添加-I在每個人的面前:

SOURCE_DIRS := $(shell find base_dir -type d -print) 
INCDIRS  = $(addprefix -I,$(SOURCE_DIRS)) 

這可能是,如果你需要更好的$(SOURCE_DIRS)用於別的東西。

+0

謝謝,這就是我一直在尋找的東西! – martega