Makefile “家庭作业1';”后缺少操作数生成文件
我一直收到一条错误消息,上面写着“diff:homework1'之后缺少操作数”,但我包含了一个bash文件。有人能看看我的makefile并给我一个如何修复它的提示吗?谢谢Makefile “家庭作业1';”后缺少操作数生成文件,makefile,Makefile,我一直收到一条错误消息,上面写着“diff:homework1'之后缺少操作数”,但我包含了一个bash文件。有人能看看我的makefile并给我一个如何修复它的提示吗?谢谢 # # $RCSfile$ # $Revision$ # $Author$ # $Date$ # $Log$ # CC=gcc DEBUG=-g CFLAGS=#(DEBUG) -Wall -Wshadow -Wunreachable-code -Wredundant-decls -Wmissing-decla
#
# $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 *~
您已经引用了一个make变量
$(example.bash)
,但make文件中没有设置变量example.bash
。您是指文件example.bash
?如果是这样,则不应使用make变量语法:
test: *
diff $(PROGS) example.bash || exit 0
(为什么这里有
*
作为先决条件?这似乎不太有用)要使用diff
比较两个命令的输出,您需要将这两个命令中的至少一个命令的输出重定向到文件,而另一个命令的输出通过管道传输到diff
的输入流。下面是一个用其输出文件替换$(PROGS)
的示例:
./$(PROGS) > progs_output
bash example.bash | diff progs_output - || exit 0
它执行$(PROGS)
的值,将其输出发送到名为PROGS\u output
的文件。然后执行bash脚本,其输出通过管道传输到diff
实用程序的标准输入流,该实用程序将progs\u输出与来自其标准输入流的内容进行比较。其他一切都是你自己做的。但为什么要使用出口0?如果测试失败,你不想让make告诉你吗
另外,星号(*)作为测试
目标的先决条件是什么?或者,如果您正在执行bash脚本,请使用$$
,因为make认为它是一个变量$
转义$
字符,让shell执行脚本。@MadScientist:我尝试了几种不同的方法:“example.bash”、$$(example.bash)或$$example.bash。它说“make:**没有规则使目标diff',这是test.停止所需要的。”。我应该怎么做?我想做的是比较$(PROGS)和example的输出;看起来您在测试之后删除了换行符:
目标,现在make认为diff
命令是一个先决条件。你需要一条新线路。另外,你最初的问题很不清楚你想做什么:考虑到你随后的评论,似乎Chrono的回答会满足你的要求。