你能解釋我爲什麼Makefile的規則:的Makefile和rm -f文件{EXT1,EXT2,EXT3}問題
clean:
rm -f foo.{bar1,bar2,bar3}
不會導致刪除文件:foo.bar1 foo.bar2和Foo。 BAR3? 我相信我在各種Makefiles中看到過很多次這樣的模式,但是我正在編寫自己的Makefile,並且無法使該規則正常工作(沒有文件被刪除)。
我使用:
- GNU使3.81
- GNU的bash 4.1.5
猛砸evals這種模式,因爲我懷疑:
$ echo test.{a,b,c}
test.a test.b test.c
謝謝!
UPDATE
感謝大衛的提示,我發現了上述問題的解決方案。 gnu make默認使用/ bin/sh,這就是爲什麼。{1,2,3}不會被評估爲a.1 a.2 a.3。
,使「使」使用bash的,而不是SH附加的下面一行到你的Makefile:從現在起
SHELL=/bin/bash
{1,2,3}將被視爲A.1 A.2一.3
@ Ak91:您通常會將自我回答*寫爲*答案。回答你自己的問題是被允許和鼓勵的。然而,這將是幾天之後才能接受你自己的答案,並且沒有任何要點。 – dmckee 2010-06-15 22:10:57
@dmckee:對不起,我是新來的Stackoverflow網站。我必須學習它的規則。 – user360872 2010-06-17 17:46:32
@ AK91:我提到它不僅僅是通過定位,而是因爲我很樂意投票給你正確的自我回答... – dmckee 2010-06-17 21:42:48