我一直收到"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 *~发布于 2013-07-29 10:59:35
您引用了一个make变量$(example.bash),但您的makefile中没有设置变量example.bash。你指的是example.bash文件吗?你不应该使用make variable语法,如果这是真的:
test: *
diff $(PROGS) example.bash || exit 0这似乎没有什么用处)
发布于 2013-07-29 11:42:44
要比较使用diff的两个命令的输出,您至少需要将这两个命令中的一个命令的输出重定向到一个文件,而将另一个命令的输出通过管道传输到diff的输入流。下面是一个用输出文件替换$(PROGS)的示例:
./$(PROGS) > progs_output
bash example.bash | diff progs_output - || exit 0它执行$(PROGS)的值,将其输出发送到一个名为progs_output的文件。然后执行bash脚本,将其输出通过管道传输到diff实用程序的标准输入流,该实用程序将progs_output与来自其标准输入流的内容进行比较。其他的都是你做的。但是为什么要使用出口0呢?如果测试失败,你不希望make告诉你吗?
另外,作为test目标的前提条件的星号(*)是什么?
https://stackoverflow.com/questions/17915378
复制相似问题