2010-01-07 58 views
0

,我有以下內容的一個Makefile:Foreach循環Makefile中不工作:「系統找不到指定文件」

NUMBERS = 1 2 3 4 
lib: 
    $(foreach var,$(NUMBERS),./a.out $(var);) 

這是我運行命令(在同一目錄Makefile)

make -f Makefile 

但是我收到一條錯誤消息,指出「系統找不到指定的文件」。

one of the answers的建議,我創建以下文件相同的目錄中Makefile裏:

a.out 
1.out 
2.out 
3.out 
4.out 

現在的誤差變:

./a.out 1; ./a.out 2; ./a.out 3; ./a.out 4;使(E = -1):錯誤-1化妝: *** [LIB]錯誤-1

注:我在Windows XP平臺上運行

+0

你可以嘗試運行'./a.out 1; ./a.out 2; ./a.out 3; ./a.out 4;'你在shell提示符下,而不是運行'make'。也許它會顯示更多有用的錯誤事件。 – 2010-01-07 08:44:39

+0

什麼是1.out等? – 2011-02-14 20:22:54

回答

3

make的目的是通過運行命令來創建(和更新)依賴源文件的目標文件。

這裏,問題在於運行的命令。您試圖運行(通過make)命令a.out,但它不存在,或者不是可執行的命令。嘗試用你想運行的實際可執行命令替換makefile中的a.out。

1

在我看來,該錯誤是因爲找不到文件a.out而不是因爲找不到makefile。

另外,如果makefile的名稱是「Makefile」,只需調用「make」即可(不使用-f選項),因爲默認情況下會按名稱查找文件:GNUmakefile,makefile和Makefile 。

+0

我在與makefile相同的文件夾中創建了'a.out',但仍然存在問題。 – Graviton 2010-01-07 08:29:27

+1

請注意,'a.out'必須是可執行文件。 – 2010-01-07 08:40:23

0

只是你想要做什麼?

在我看來,一個簡單的腳本會更適合而不是使用make。

+0

這是我想要做的縮小范例。 – Graviton 2010-01-07 09:11:18

0

在Windows/DOS上,使用&&而不是;在一行上加入多個命令。您必須手動包含最終命令,否則尾隨&&將引發語法錯誤。試試這樣的:

NUMBERS = 1 2 3 4 
lib: 
    $(foreach var,$(NUMBERS),.\a.out $(var) &&) echo. 
相關問題