关于Makefile

来源:互联网 发布:网络五大鬼畜歌曲视频 编辑:程序博客网 时间:2024/05/19 17:49

什么是Makefile呢?Makefile是一种配置文件,Makefile 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为Makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。会不会写Makefile,从侧面说明了一个人是否具备大型工程的能力。Makefile带来的好处就是——自动化编译,只需要一个make命令整个工程自动编译,大大提高了软件的开发效率。

make命令执行时需要一个Makefile文件,用来告诉make命令需要怎样去编译和链接程序。那什么叫编译什么又叫链接呢?一般来说,c/c++生成可执行文件,首先要把源文件编译成中间代码文件,在Windows下是  .obj文件,在Linux/Unix下是  .o文件,这个过程叫做编译(compile)。然后在把大量的 .o文件(Linux下)或者 .obj文件(Windows下)合成执行文件,这个过程叫做链接(link)。现在大概知道Makefile的作用了,那么现在让我们来认识一下如何写Makefile文件,也就是它的规则。

#表示注释

VAR=name   #表示定义了变量VAR,并赋值为name

VAR+=is    #表示在前面的值后面加is

VAR?=nameis   #表示如果VAR没有定义则定义变量VAR并且赋值为nameis,如果VAR已经定义则使用之前的值

下面先看一段简短的Makefile


target: depend1 depend2 depend3

gcc hello.c


target: depend1 depend2  depend3 ....#target是目标,make执行时就会去找相应的目标,具体使用时可以在make+目标(如make  target)并不一定就是叫target,是自定义的,你可以定义为别的名字,但最好能体现它的功能,比如这里的是做了编译的工作,就可以把target改为compile,这样就很明了。因为Makefile可以有很多的目标,make+不同的目标名,就可以做不同的事情了,当你只敲make的时候它就只会执行头目标,什么是头目标?就是第一个目标。好,target说完了,那后面的那些depend123是什么呢?这叫做依赖。是用来说明目标文件是由哪些文件生成的。然后就是下一行gcc hello.c,这叫动作,就是做的事情,最需要注意的是动作前面必须是TAB键,可以有多行动作。


原创粉丝点击