2013-07-29 36 views
0

我一直收到一條錯誤消息,指出「diff:homework1後面缺少操作數」,但我已經包含了一個bash文件。有人可以看看我的makefile,並給我一個關於如何解決它的提示嗎?謝謝!- 作業文件

# 
# $RCSfile$ 
# $Revision$ 
# $Author$ 
# $Date$ 
# $Log$ 
# 

CC=gcc 
DEBUG=-g 
CFLAGS=#(DEBUG) -Wall -Wshadow -Wunreachable-code -Wredundant-decls -Wmissing-declarations -Wold-style-definition -Wmissing-prototypes -Wdeclaration-after-statement 
PROGS=homework1 

all: $(PROGS) test 

homework1: homework1.o 
    $(CC) $(CFLAGS) -o homework1 homework1.o 

homework1.o: homework1.c 
    $(CC) $(CFLAGS) -c homework1.c 

test: * 
    diff $(PROGS) $(example.bash) || exit 0 

clean: 
    rm -f $(PROGS) *.o *~ 

回答

0

你引用的make變量但沒有可變example.bash集生成文件。你的意思是文件example.bash?你不應該使用make變量語法,如果這是真的:

test: * 
     diff $(PROGS) example.bash || exit 0 

(?你有*這裏的前提條件這似乎爲什麼不有用)

+0

或者,如果您正在執行bash腳本,請使用'$$',因爲make認爲它是一個變量。 '$$'轉義'$'字符,讓你的shell執行腳本。 –

+0

@MadScientist:我嘗試了幾種不同的方法:「example.bash」,$$(example.bash)或$$ example.bash。它說:「make:***沒有規則可以讓'target'需要'diff',停止。」我該怎麼辦? – user2203774

+0

我想要做的是比較$(PROGS)和example.bash的輸出結果 – user2203774

0

要使用比較兩個命令的輸出diff,則需要將這兩個命令中的至少一個重定向到文件,而將另一個命令的輸出傳送到輸入流diff。下面是與它的輸出文件替換$(PROGS)一個例子:

./$(PROGS) > progs_output 
bash example.bash | diff progs_output - || exit 0 

它執行的$(PROGS)值,將其輸出發送到一個名爲progs_output文件。然後執行bash腳本,將其輸出傳送到diff實用程序的標準輸入流,該實用程序將progs_output與來自其標準輸入流的東西進行比較。一切都是你的事。爲什麼你會用0號出口?如果測試失敗了,你不想告訴你嗎?

此外,星號(*)作爲test目標的先決條件是什麼?