伪目标的引入(三)

  

,,,,,,,,我们之前学习的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的定义,但是由于我们使用了这个小技巧,我们的干净的目标还是被执行了。通过对伪目标的学习,总结如下:


,,,,,,,,

伪目标的引入(三)