makefile杂文

makefile简介

    gcc编译文件的基本过程 

    

 把相关文件编译成.o文件   

    

总结:  编译:只是对一个一个文件进行编译  

         链接:对所有.o文件进行链接  解决了函数交叉引用的问题  





如果是多个文件,如果其中的一个文件被改写了,那么进行编译的时候,就会所有的工程编译一遍,比较浪费时间。


因此提出了makefile这个命令组织文件和编译 ,如果你修改了其中一个文件,那么奖将来编译的时候就会只需要编译那一部分,和与他有关的文件编译。而不需要把所有的源文件都编译了。这一样就节约了编译时间。



    makefile 是一个脚本,make程序执行的一个shell脚。一个makefile的主要包含了两大部分 

        1.文章的组织结构  

        2.指令。怎么来创建这些文件  

基本含义:

        main.o: main.c median.h

            gcc -c main.c 

main.o                是目标我们最终希望生成的东西

main.c median.h 使我们为了生成目标需要的依赖文件

gcc -c main.c       是我们为了达到目标执行命令  



make 的思维过程:

    

由于上面的依赖关系所形成的树状图  


makefile

       跟新的算法: 时间戳的算法 

makefile的本质是:依据你的规则,形成相关的依赖树 ,利用时间戳来来判断



///////////////////////////////////////////////////////////////////////////////////////

makefile的隐藏规则 ,模式规则,主要是相关规则的理解。重点是看make手册学会理解 (从便利性的角度来看)

 常见的几种写法:

1. %.o:%c  表示任何一个.o文件都依赖于与他同名的.o文件。

 %.o: %.c

    $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -O $@

      $@ 表示目标     $< 表示依赖 

例如你有10目标需要这样规则,那么$@分表表示第一个,第二个,第三个等等。 

$< 表示任何依赖的文件

 

2.gcc -M crash.cpp 执行这条命令,会打印出crash.o所依赖的文件。

#include $<sources:.c=.d>包含这些所欲依赖文件



猜你喜欢

转载自blog.csdn.net/qq_1335857320/article/details/80917944