- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
**********************Makefile学习心得Makefile是一种自动化构建工具,用于管理大型软件项目的编译过程。它使用简单的语法定义构建规则,并根据这些规则自动执行编译、链接、打包等任务。DH投稿人:DingJunHong什么是Makefile?自动化构建工具Makefile是一种自动化构建工具,它定义了项目构建的规则和流程。简化构建过程Makefile可以将复杂的编译、链接等步骤自动化,简化开发流程。提高构建效率Makefile可以避免手动执行重复的构建步骤,提高开发效率。Makefile的基本语法目标目标表示要执行的任务,例如编译文件或生成文档。依赖依赖是指目标的生成需要哪些文件或步骤。命令命令是用来执行任务的shell命令,比如gcc编译命令。变量变量可以用来存储和引用一些值,方便代码的复用和维护。目标(Target)目标文件目标文件是Makefile中要生成的最终文件,例如可执行文件、库文件、文档等。依赖关系目标文件通常依赖于其他文件,例如源代码文件、头文件等。当依赖文件发生变化时,目标文件需要重新生成。目标名称目标名称可以是文件名、目录名或其他标识符,用于标识要生成的目标文件。依赖(Dependency)11.目标文件依赖目标文件依赖于源文件,源文件发生变化时,需要重新编译目标文件。22.目标文件依赖库文件目标文件依赖于库文件,库文件发生变化时,需要重新链接目标文件。33.目标文件依赖其他目标文件目标文件依赖于其他目标文件,其他目标文件发生变化时,需要重新编译目标文件。命令(Commands)命令定义命令用于执行特定的操作,例如编译、链接、清理等。命令以制表符开头,后面跟着要执行的shell命令。命令示例gccmain.c-omain这条命令使用gcc编译器编译main.c文件并生成名为main的可执行文件。变量(Variables)定义变量变量用于存储信息,例如文件名、编译器选项、路径等。变量引用在Makefile中使用美元符号($)引用变量,例如$(变量名)。变量作用域变量作用域分为全局变量和局部变量,全局变量可在整个Makefile中使用,而局部变量仅在定义所在的规则中有效。内置函数(Built-inFunctions)方便的操作Makefile提供了许多内置函数,例如`wildcard`用于查找符合特定模式的文件,`subst`用于字符串替换,`patsubst`用于模式替换,`shell`用于执行shell命令,`error`用于抛出错误信息。提高效率使用内置函数,我们可以简化Makefile的代码,减少重复代码,提高Makefile的可读性和可维护性,还可以减少编写Makefile时需要记忆的命令,使编写更轻松。条件判断(ConditionalExecution)语法Makefile中可以使用if、else、endif语句进行条件判断。判断条件判断条件可以是变量值、文件是否存在、命令执行结果等。示例例如,当某个变量的值为1时,执行特定的命令。伪目标(PhonyTargets)11.避免意外执行伪目标不是实际文件,不会被依赖关系检查,即使目标文件存在,也会执行伪目标对应的命令。22.自定义操作方便定义一些自定义操作,例如清理、测试、文档生成等,这些操作不需要生成任何文件。33.提高效率伪目标可以提高效率,因为它们可以避免不必要的依赖关系检查,从而加快编译速度。静态模式匹配通配符使用通配符匹配多个文件,例如“%.c”表示所有以“.c”结尾的文件。自动化构建通过模式匹配,可以自动化构建多个目标文件,简化Makefile编写。目录结构在处理大型项目时,模式匹配可以轻松处理复杂目录结构下的文件。多目标规则11.多目标规则多个目标共享相同的依赖和命令,例如:多个源文件需要编译成目标文件。22.减少冗余避免重复编写相同的依赖和命令,提高代码可读性和维护性。33.例如将多个源文件编译成目标文件,可以使用一个多目标规则来简化操作。后缀规则(SuffixRules)后缀规则后缀规则是Makefile的一种特殊规则,它根据目标文件的后缀名来决定如何构建目标文件。例如,如果目标文件是.o文件,那么Makefile会自动使用C编译器来编译目标文件。定义后缀规则后缀规则的定义方式为:.SUFFIXES:.c.o
.c.o:
$(CC)-c$-o$@
其中.SU
文档评论(0)