Makefile案例

Makefile案例

ID:37847959

大小:24.50 KB

页数:6页

时间:2019-06-01

Makefile案例_第1页
Makefile案例_第2页
Makefile案例_第3页
Makefile案例_第4页
Makefile案例_第5页
资源描述:

《Makefile案例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Makefile案例本章目标(1)make与Makefile介绍(2)Makefile基本规则(3)简单的Makefile编写(4)Make自动化变量(5)Makefile编译多个可执行文件(6)make常用内嵌函数(7)多级目录Makefile案例一:基本的Makefile编写touchmain.cadd.cadd.hsub.csub.hvimMakefilemain:main.oadd.osub.ogcc-Wall-gmain.oadd.osub.o-omainmain.o:main.cgc

2、c-Wall-g-cmain.c-omain.oadd.o:add.cadd.hgcc-Wall-g-cadd.c-oadd.osub.o:sub.csub.hgcc-Wall-g-csub.c-osub.omake(解释结果)再次make(没有改动文件;解释结果)touchsub.h再次make(改动了sub.h;解释结果)增加伪目标cleanclean:rm-fmainmain.oadd.osub.omakeclean(对应VS中的“清除”)ls(看一下删除后的结果)makemain.o(表

3、示只需要生成main.o;对应VS中的“编译”).PHONY:clean(显示指定clean是一个伪目标)#.PHONY:clean(注释用#)解释如果没有.PHONY:clean会出现什么情况(1.当前目录没有clean文件;2.当前目录有clean文件(touchclean);makeclean就会出错)案例二:自定义和自动化变量(1)makefile有重复,可以自定义变量(2)makefile自动化变量$@规则的目标文件名$<规则的第一个依赖文件名$^规则的所有依赖文件列表main:mai

4、n.oadd.osub.omain规则的目标文件名main.o规则的第一个依赖文件名main.oadd.osub.o规则的所有依赖文件列表.PHONY:cleanOBJECTS=main.oadd.osub.o#自定义变量CC=gccCFLAGS=-Wall-gmain:$(OBJECTS)$(CC)$(CFLANGS)$^-o$@main.o:main.c$(CC)$(CFLANGS)-c$<-o$@add.o:add.cadd.h$(CC)$(CFLANGS)-c$<-o$@sub.o:su

5、b.csub.h$(CC)$(CFLANGS)-c$<-o$@clean:rm-fmain$(OBJECTS)makefile文件名(1)Makefile(2)makefile(3)其他文件名:如Make.makefile(使用的时候需要选项-f)为了演示清楚:clean:echo“begintodelete...”对比:@echo“begintodelete...”@gcc...案例三:Makefile编译多个可执行文件例子:test1.c和test2.c都有main函数.PHONY:clea

6、nall或.PHONY:cleanBIN=test1test2all:$(BIN)clean:rm-f$(BIN)make后就可以生成可执行文件test1test2查看输出:cctest1.c-otest1cctest2.c-otest2解释:(all是一个伪目标)隐含推导规则:同名的.c文件生成同名的可执行文件(不使用隐含规则,使用显式规则).PHONY:cleanallBIN=test1test2all:$(BIN)test1:test1.ogcc-Wall-g$^-o$@test2:tes

7、t2.ogcc-Wall-g$^-o$@clean:rm-f*.o$(BIN)make之后观察输出,并解释tes1.o和tes2.o的产生也依赖自动推导规则案例四:模式规则和后缀规则模式规则:%.o:%.c后缀规则:.c.o:.PHONY:cleanallBIN=test1test2all:$(BIN)%.o:%.cgcc-Wall-g-c$<-o$@test1:test1.ogcc-Wall-g$^-o$@test2:test2.ogcc-Wall-g$^-o$@clean:rm-f*.o$(

8、BIN)解释输出结果用.c.o:gcc-Wall-g-c$<-o$@结果类似%.o:%.c(增加变量CC=gccCFLAGS=-Wall-g)注释掉下面信息,看结果test1:test1.ogcc-Wall-g$^-o$@test2:test2.ogcc-Wall-g$^-o$@增加test3.c增加pub.cpub.h(test3依赖文件test3.cpub.hpub.c)增加test4.c(作为测试程序;在BIN后加test4就行,轻松)make常用内嵌函数(1)函数调用$(function

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。