码迷,mamicode.com
首页 > 其他好文 > 详细

MAKEFILE编写学习--1

时间:2018-11-30 14:14:48      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:efi   files   tab   更新   The   targe   gcc   添加文件   第一个   

makefile是在编译中大型程序中使用的自动化编译工具make依赖的指令文件。这样可以使得程序的编译更加便捷快速。
makefile的一般规则如下:

target ... : prerequisites ...
command

target即是一个目标文件,它可以是可执行程序、目标中间文件、标记(label)等。这个目标要想编译出来需要的前提条件就是prerequisites这些已存在的文件。编译过程中的规则则是由command里面的各个命令组成。command以一个Tab起头。make会比较目标文件与条件中的文件更新时间,一旦有文件被修改,make就会依赖于这些前提文件进行重新编译。makefile中第一个target会被认为是make的默认目标。
prerequisites是空的时候,前面的目标文件被当成一个命令,使用make执行时会直接执行command里的命令。

clean :
    rm edit main.o kbd.o command.o display.o     insert.o search.o files.o utils.o

执行这个make clean会将当前文件夹下的几个中间文件删除掉。
makefile中可以使用变量,类似于C语言中的宏:

edit : main.o kda.o command.o
    gcc -o edit main.o kda.o command.o

这里面如果要向edit的依赖项中添加文件,那么也得向command中加入同样的文件,makefile一大,就很难批量处理,这时候可以声明变量:

objects = main.o kda.o command.o

那么上面的makefile可以改成:

objects = main.o kda.o command.o

edit : $(objects)
    gcc -o edit $(objects)

通过美元符号$(变量名)的方式来引用变量。
make工具会.o文件对应的.c文件自动的添加到依赖关系中。如果找到一个foo.o,那么对应的foo.c就会自动的加入到依赖关系并且会在command中自动隐式添加一行gcc -o。那么foo,o的生成就可以简写为:

foo.o : other_files_list

其中的command直接就不用写了。
.PHONY用来修饰target,表示它是一个“伪目标”。
总结:

  • 显式规则
  • 隐式规则
  • 变量定义
  • 引用文件
  • 注释
    makefile中只有行注释,注释以#开头。

MAKEFILE编写学习--1

标签:efi   files   tab   更新   The   targe   gcc   添加文件   第一个   

原文地址:https://www.cnblogs.com/bobliao/p/10043083.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!