0

我不断收到一条错误消息,上面写着“差异:在 `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 *~
4

2 回答 2

0

您已经引用了一个 make 变量,但您的 makefile$(example.bash)中没有设置变量。example.bash你是说文件example.bash吗?如果这是真的,你不应该使用 make 变量语法:

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

(为什么这里有*一个先决条件?这似乎没有用)

于 2013-07-29T02:59:35.170 回答
0

要使用 比较两个命令的输出diff,您需要将这两个命令中的至少一个的输出重定向到一个文件,而另一个命令的输出通过管道传输到diff. 这是一个替换$(PROGS)为输出文件的示例:

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

它执行 的值$(PROGS),将其输出发送到名为 的文件progs_output。然后执行 bash 脚本,其输出通过管道传输到diff实用程序的标准输入流,progs_output与来自其标准输入流的内容进行比较。其他一切都是你做的。你为什么要使用 exit 0 呢?如果测试失败,你不想告诉你吗?

另外,星号 (*) 作为test目标的先决条件是什么?

于 2013-07-29T03:42:43.847 回答