Linux基础教程:makefile和make规则(4)

all文件并不存在,make总是会假设它需要被生成,因此会检查它的依靠文件exec1和exec2是否需要更新,当把它的依靠文件更新后,就会执行它的规则里的命令行,但是在规则里没有哪个命令作用于名为all的实际文件,所以该规则并不真正改变all的状态。

注意下面的语句用法,这些语句可以添加到makefile文件后:

myprog.tar : makefile $(SOURCES) $(HEADERS)

tar -cvf $@ S^

clean :

rm *.o

当make命令不带参数执行时,最后两个目标myprog.tar和clean的命令不会执行,因为这些文件没有依赖文件。将这两个目标作为参数传递给make命令,可以调用与目标关联的命令。例如:执行make myprog.tar命令会执行tar -cvf myprog.tar makefile foo.c bar.c foo.h bar.h语句,而执行make clean命令会执行clean *.o语句。

下面给出一个较完整的makefile文件:

---------------------------------------------------------

#Updated makefile that uses some built-in macros and

#@-preceded commands

define CC

gcc

endef

OPTIONS=-03

OBJECTS=main.o input.o compute.o

SOURCES=main.c input.c compute.c

HEADERS=main.h input.h compute.h

complete : power

@echo “Build complete”

power : $(OBJECTS)

$(CC) $(OPTIONS) -o $@ $^ -lm

@echo “The executable is in the ‘power’ file”

main.o : main.h input.h compute.h

compute.o : compute.h

input.o : input.h

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/25221.html