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的主要内容,如果未能解决你的问题,请参考以下文章