如果我从这个文件中删除gcc行不应该将编译作为隐式规则吗?为什么不允许我使用该makefile配置运行程序./calc
?
生成文件:
all: calc
clean:
rm -rf calc arit.o calc.o
calc: calc.o arit.o
#gcc -o calc calc.o arit.o
calc.o: calc.c arit.h
#gcc -c calc.c
arit.o: arit.c arit.h
#gcc -c arit.c
答案 0 :(得分:6)
因为注释是由制表位缩进的,所以它被视为一个命令(由shell执行,将其视为注释)。
如果'#'符号在第1列,那么它们将是纯(make)注释。
答案 1 :(得分:2)
继Jonathan Leffler的回答之后,以下最小GNUMakefile
应仅通过隐式规则进行所有编译和链接:
calc: calc.o arit.o
arit.o: arit.c arit.h
calc.o: calc.c arit.h
clean:
rm -rf calc arit.o calc.o