,,,,,,,,我们之前学习的makefile中的目标究竟是什么呢?在默认情况下:。那么下面的代码有什么意义呢?还是以代码为例来进行分析说明,func。c和主要。c还是用的是上节博客中的
hello.out all : func.o main.o ,,,gcc -o hello.out func.o main.o 时间:func.o func.c ,,,gcc -o func.o -c func.c main.o : c ,,,gcc -o main.o -c c clean : ,,,rm * .o hello.out
,,,,,,,,我们来看看在进行使之前和使清洁之后的效果
,,,,,,,,我们看到清洁这个目标已经被成功执行,下来我们在文件夹中建立一个干净的文件,再来看看
,,,,,,,,我们看到再次执行使清洁命令时,它说干净是最新的,并没有去执行这个命令。其原因就是在文件夹中存在一个同名文件,它去执行时发现这个文件是存在的,并且在时间上更新,因此便不会去执行这个命令了。那么有什么方法可以去解决这个问题呢?在makefile中,有个的概念:
,,,,,,,,下来我们还是以代码为例来看看伪目标是怎样来使用的
hello.out all : func.o main.o ,,,gcc -o hello.out func.o main.o func.o : func.c ,,,gcc -o func.o -c func.c main.o : c ,,,gcc -o main.o -c c .PHONY :清洁 clean : ,,,rm * .o hello.out
,,,,,,,,我们来看看编译效果
,,,,,,,,我们看到不管有没有干净的文件,makefile总是能执行清洁这个目标。下来我们来看看伪目标的妙用:<强> 强>。它的原理是
,,,,,,,,下来我们还是以代码为例来进行说明
hello.out : func.o main.o ,,,gcc -o hello.out func.o main.o func.o : func.c ,,,gcc -o func.o -c func.c main.o : c ,,,gcc -o main.o -c c .PHONY : rebuild clean 所有 rebuild : clean 所有 all : hello.out clean : ,,,rm * .o hello.out
,,,,,,,,我们来分析下,伪目标重建依赖于清洁和所有,而清洁是删除生成的. o和你好。从文件,都是依赖于你好。了。也就是说重建的作用是相当于重编译,清理完之后再次进行编译工作下。来我们来看看效果
,,,,,,,,那么.PHONY是标准的makefile中的关键字,GNU中是支持标准的makefile的,。在.PHONY关键字失效的情况下,我们又是怎么进行伪目标的定义的呢?原理
,,,,,,,,下来我们还是以代码为例来进行分析说明
hello.out all : func.o main.o ,,,gcc -o hello.out func.o main.o func.o : func.c ,,,gcc -o func.o -c func.c main.o : c ,,,gcc -o main.o -c c clean :力量 ,,,rm * .o hello.out 力量:
,,,,,,,,我们来看看使清洁是否还会有效?
,,,,,,,,我们看到虽然没有伪目标.PHONY的定义,但是由于我们使用了这个小技巧,我们的干净的目标还是被执行了。通过对伪目标的学习,总结如下:
,,,,,,,,