理解Make的隐含规则

时间:2010-09-21 04:08:50

标签: makefile

如果我从这个文件中删除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

2 个答案:

答案 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