新手学习记录4:makefile学习实践--伪目标的引入

来源:互联网 发布:进销存财务一体软件 编辑:程序博客网 时间:2024/05/22 17:30

伪目标并不是一个"目标(target)", 不像真正的目标那样会生成一个目标文件.“伪目标”并不是一个文件,只是一个标签,由于“伪目标”不是文件,所以make无法生成它的依赖关系和决定它是否要执行。我们只有通过显示地指明这个“目标”才能让其生效。当然,“伪目标”的取名不能和文件名重名,不然其就失去了“伪目标”的意义了。

典型的伪目标是 Makefile 中用来清理编译过程中中间文件的 clean 伪目标, 一般格式如下:

.PHONY: clean   <-- 这句没有也行, 但是最好加上clean:    -rm -f *.o        常用的伪目标还有all.,使用时候格式为:all:             gcc hello.c.PHONY:all上面两种格式其实是一样的.加入makefile中试一试.TARGET=mainEXE=hello.o hello1.oCC=gccCFLAGS = -Wall -O -g.PHONY:all cleanall:$(TARGET)main:$(EXE)    $(CC) $^ -o $@hello.o:hello.c  hello1.h    $(CC) $(CFLAGS) -c $<hello1.o:hello1.c hello1.h    $(CC) $(CFLAGS) -c $<clean:    rm -f *.o            #也是TAB

运行make的编译结果:

melody@melody-G41D3:~/make5$ make
gcc -Wall -O -g -c hello.c
gcc -Wall -O -g -c hello1.c
gcc hello.o hello1.o -o main
melody@melody-G41D3:~/make5$ ./main
myprint 1!


0 0