Makefile学习简化Makefile

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Makefile学习简化Makefile相关的知识,希望对你有一定的参考价值。

从上一节来看Makefile,这玩意儿真的好冗余,所以我们需要进行一些新的简化(当然这个是make这个工具已经集成好的,我们只需要学会调用就好了)

一,使用变量。

  我们在上一节的例子中可以看到多个.o文件的重复,好麻烦,能不能声明一个变量替代一批的.o文件啊?当然要是每个都要替换的话,那就没有意思了,只能说能够批量替换,比如:使用file=A.o B.o C.o D.o这句话进行声明,那么之后统一要用A.o B.o C.o D.o这四个.o文件的话,那么久直接用$(file)进行替代就好了。

二,make自动推导

  我们都知道A.o的生成依赖于A.c,那么如果我们建立默认规则,并让程序遵守,我们是不是就可以避免了那一步所有的A.o、B.o都需要重新声明并且指出依赖文件了呢?很巧,make就是这么做的,它会根据目的.o文件找到源文件,所以就避免了咱们自己去写依赖了,结果就是,如果另外需要.h文件,声明即可,否则,就不必声明了。给个例子:

  objects = main.o kbd.o command.o display.o              insert.o search.o files.o utils.o
 
   edit : $(objects)
           cc -o edit $(objects)
 
   main.o : defs.h
   kbd.o : defs.h command.h
   command.o : defs.h command.h
   display.o : defs.h buffer.h
   insert.o : defs.h buffer.h
   search.o : defs.h buffer.h
   files.o : defs.h buffer.h command.h
   utils.o : defs.h

   clean :
           rm edit $(objects)
最后一句clean的意思就是清除之前生成的.o文件以及可执行文件。
另外,大家一定要记着所有的命令之前一定是Tab,博主用的是Ubuntu,Tab是八个空格。。。。。。具体其他的编译器,希望大家自己查一下资料。

以上是关于Makefile学习简化Makefile的主要内容,如果未能解决你的问题,请参考以下文章

Makefile

makefile中的Cflags用法

Ubuntu上安装make命令并使用makefile文件简化操作

Makefile学习----初步理解

gdbmake/makefile学习心得

gdbmake/makefile学习心得