Make工程管理器17P

上传人:仙*** 文档编号:43042354 上传时间:2021-11-29 格式:PPT 页数:17 大小:111KB
收藏 版权申诉 举报 下载
Make工程管理器17P_第1页
第1页 / 共17页
Make工程管理器17P_第2页
第2页 / 共17页
Make工程管理器17P_第3页
第3页 / 共17页
资源描述:

《Make工程管理器17P》由会员分享,可在线阅读,更多相关《Make工程管理器17P(17页珍藏版)》请在装配图网上搜索。

1、Make工程管理器Make工程管理器 n所谓工程管理器,是指管理较多的文件的。可以试想一下,有一个上百个文件的代码构成的项目,如果其中只有一个或少数几个文件进行了修改,按照之前所学的编译工具,就不得不把这所有的文件重新编译一遍,因为编译器并不知道哪些文件是最近更新的,而只知道需要包含这些文件才能把源代码编译成可执行文件,于是,程序员就不得不再重新输入数目如此庞大的文件名以完成最后的编译工作。 n所以,人们就希望有一个工程管理器能够自动识别更新了的文件代码,同时又不需要重复输入冗长的命令行,这样,Make工程管理器也就应运而生了。 Make工程管理器 n实际上,Make工程管理器就是“自动编译管

2、理器”,这里的“自动”是指它能够根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。用户只需编写一次简单的编译语句就可以了。它大大提高了实际项目的工作效率。Makefile基本结构 nMakefile是Make读入的唯一配置文件。在一个Makefile中通常包含如下内容:n需要由make工具创建的目标体(target),通常是目标文件或可执行文件;n要创建的目标体所依赖的文件(dependency_file);n创建每个目标体时需要运行的命令(command)。n它的格式为:target: dependency_filescom

3、mandMakefile基本结构 n例如,有两个文件分别为hello.c和hello.h,创建的目标体为hello,那么,对应的Makefile就可以写为: nhello: hello.o icc o hello hello.o hello.o: hello.c hello.h icc o hello.o c hello.c n n接着就可以使用make了。使用make的格式为:nmake targetn这样make就会自动读入Makefile(也可以是首字母小写makefile)并执行对应target的command语句,并会找到相应的依赖文件。n如果直接运行make,则建立Makefile

4、中的第一个目标。 n注意:在注意:在Makefile中的每一个中的每一个command前必须有前必须有“Tab”符,否则在运行符,否则在运行make命令时会出错。命令时会出错。Makefile基本结构 n例例1:helloword : file1.o file2.oicc file1.o file2.o -o hellowordfile1.o : file1.c head.hicc -c file1.c -o file1.ofile2.o : file2.c head.hicc -c file2.c -o file2.oMakefile变量n为了进一步简化编辑和维护Makefile,make允

5、许在Makefile中创建和使用变量。变量是在Makefile中定义的名字,用来代替一个文本字符串,该文本字符串称为该变量的值。在具体要求下,这些值可以代替目标体、依赖文件、命令以及makefile文件中其它部分。在Makefile中的变量定义有两种方式:一种是递归展开方式,另一种是简单方式。 Makefile变量n递归展开方式定义的变量是在引用在该变量时进行替换的,即如果该变量包含了对其他变量的应用,则在引用该变量时一次性将内嵌的变量全部展开,虽然这种类型的变量能够很好地完成用户的指令,但是它也有严重的缺点,如不能在变量后追加内容。n为了避免上述问题,简单扩展型变量的值在定义处展开,并且只展

6、开一次,因此它不包含任何对其它变量的引用,从而消除变量的嵌套引用。n递归展开方式的定义格式为:VAR=varn简单扩展方式的定义格式为:VAR:=varnMake中的变量使用均使用格式为:$(VAR)Makefile变量n变量名是不包括“:”、“#”、“=”结尾空格的任何字符串。同时,变量名中包含字母、数字以及下划线以外的情况应尽量避免,因为它们可能在将来被赋予特别的含义。n变量名是大小写敏感的,例如变量名“foo”、“FOO”、和“Foo”代表不同的变量。Makefile变量nMakefile中的变量分为用户自定义变量、预定义变量、自动变量及环境变量。自定义变量的值由用户自行设定,而预定义变

7、量和自动变量是通常在Makefile都会出现的变量,其中部分有默认值,也就是常见的设定值,当然用户可以对其进行修改。Makefile中常见预定义变量中常见预定义变量 nAR 库文件维护程序的名称,默认值为arnAS 汇编程序的名称,默认值为asnCC C编译器的名称,默认值为ccnCPP C预编译器的名称,默认值为$(CC) EnCXX C+编译器的名称,默认值为g+nFC FORTRAN编译器的名称,默认值为f77nRM 文件删除程序的名称,默认值为rm fnARFLAGS 库文件维护程序的选项,无默认值nASFLAGS 汇编程序的选项,无默认值nCFLAGS C编译器的选项,无默认值nCP

8、PFLAGS C预编译的选项,无默认值nCXXFLAGS C+编译器的选项,无默认值nFFLAGS FORTRAN编译器的选项,无默认值Makefile中常见自动变量中常见自动变量 n$* 不包含扩展名的目标文件名称n$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件 n$ 第一个依赖文件的名称n$? 所有时间戳比目标文件晚的依赖文件,并 以空格分开n$ 目标文件的完整名称n$ 所有不重复的依赖文件,以空格分开n$% 如果目标是归档成员,则该变量表示目标的归档成员名称 Makefile规则 nMakefile的规则是Make进行处理的依据,它包括了目标体、依赖文件及其

9、之间的命令语句。一般的,Makefile中的一条语句就是一个规则。 n为了简化Makefile的编写,make还定义了隐式规则和模式规则 。Makefile规则 n1、隐式规则、隐式规则n隐式规则能够告诉make怎样使用传统的技术完成任务,这样,当用户使用它们时就不必详细指定编译的具体细节,而只需把目标文件列出即可。Make会自动搜索隐式规则目录来确定如何生成目标文件。 n注意:在隐式规则只能查找到相同文件名的不同后缀名文件,如”file.o”文件必须由”file.c”文件生成。Makefile规则 n2、模式规则、模式规则n模式规则是用来定义相同处理规则的多个文件的。它不同于隐式规则,隐式规

10、则仅仅能够用make默认的变量来进行操作,而模式规则还能引入用户自定义变量,为多个文件建立相同的规则,从而简化Makefile的编写。n模式规则的格式类似于普通规则,这个规则中的相关文件前必须用“%”标明。使用变量替换OBJS = file1.o file2.oCC = icchelloworld : $(OBJS) $(CC) $(OBJS) -o helloworldfile1.o : file1.c head.h $(CC) -o file1.o -c file1.cfile2.o : file2.c head.h $(CC) -o file2.o -c file2.cclean: rm

11、 -rf *.o helloworld例1:helloword : file1.o file2.oicc file1.o file2.o -o hellowordfile1.o : file1.c head.hicc -c file1.c -o file1.ofile2.o : file2.c head.hicc -c file2.c -o file2.oclean: rm -rf *.o helloworld习题n拷贝user01目录下的makefile文件夹到当前用户目录下(即例1)n修改makefile文件,要求使用自动变量代替编译语句中出现的目标文件和依赖文件n用make验证所编写的makefile是否正确

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!