医院订阅哦!一、简介make命令执行时,需要一个Makefile文件,以告诉make命令需要怎么样的去编译和链接程序(简单将:管理工程的文件,决定先编译哪些文件,编译顺序)。二、编写规则:目标1:目标依赖然后回车+tab键命令;目标2:目标依赖然后回车+tab键命令;...目标n:目标依赖然后回车+tab键命令;注意:命令必须是tab键开头的。三、Makefile演进1、一个项目有main.c/a.c/a.h/b.c/b.h五个文件;main.c包含a.h和b.h并使用相关函数;然后建立一个新的Makefile文件,内容如下:main:a.ob.ogcc-omaina.ob.oa.o:a.cgcc-ca.c-oa.ob.o:b.cgcc-cb.c-ob.o2、Makefile升级1采用makefile变量:想用就用,没有类型,不需要定义(引用变量使用$(obj)来包含更多.o文件)方法:obj:=a.ob.o那么上面的Makefile程序升级如下:obj:=a.ob.omain:$(obj)gcc-omaina.ob.oa.o:a.cgcc-ca.c-oa.ob.o:b.cgcc-cb.c-ob.o3、Makefile升级2经过以上两个makefile的编译,项目执行是成功的,但是如果main.c需要引用更多文件中的函数时,是否要填写那么多的编译命令吗?显然这个方法不可取。改进:makefile特殊变量和自动推导功能知识点说明:$代表目标名,$^代表依赖文件%代表任意字符%.o代表任意.o文件%.c代表任意.c文件以上Makefile升级如下:obj:=a.ob.omain:$(obj)gcc-omain$(obj)%.o:%c#注释:模式通配,自动将.c文件编译成.o文件gcc-o$-c$^#注释:通配符clean:rm-rf*.omain4、Makefile升级3exe=main#注释:最后的编译结果名字obj:=main.oa.ob.oc.o#注释:依赖文件all:$(obj)gcc-o$(exe)$(obj)%.o:%.cgcc-c$^-o$clean:rm-rf$(obj)$(exe)以上程序看似没有什么问题的,但是clean有点瑕疵,要是也有一个文件叫clean那怎么办?如果makeclean就没办法执行这条命令。本文永久更新链接北京看白癜风哪间医院专业中科医院用爱心承担责任
转载请注明原文网址:http://www.gzdatangtv.com/bbqb/11350.html |