跟我一起学Makefile:清空目标文件与规则解析

需积分: 0 66 下载量 154 浏览量 更新于2024-08-07 收藏 806KB PDF 举报
"清空目标文件的规则-elasticsearch权威指南-中文" 本文主要讲解了如何在Makefile中编写清空目标文件(如`.o`和执行文件)的规则,这对于维护项目干净整洁以及方便重新编译至关重要。作者强调,这是一种良好的编程习惯。通常,一个基本的`clean`规则会包含`rm`命令来删除指定的文件。 标准做法是: ```makefile .PHONY : clean clean : -rm edit $(objects) ``` 这里的`.PHONY`指示`clean`是一个伪目标,确保`make`在任何同名实际文件存在时也会执行该规则。减号`-`在`rm`命令前表示即使有文件删除失败,`make`也应该继续执行后续命令,避免因个别文件问题中断整个清理过程。为了避免`clean`成为`make`的默认目标,它应放置在Makefile的末尾。 Makefile是一个用于自动化构建项目的文件,其中包含规则、变量和其他指令。它有显式规则(明确指定目标及其依赖)、隐晦规则(make自动推导编译和链接步骤)、变量定义、文件指示和注释等组成部分。此外,Makefile还可以指定文件名、引用其他Makefile、利用环境变量`MAKEFILES`,以及控制`make`的工作方式。 书写规则时,需要考虑规则的语法、通配符的使用、文件搜索、伪目标(如`clean`)以实现不实际生成文件的目标、多目标规则、静态模式规则(用于批量处理文件)和自动生成依赖性,这些都极大地提高了Makefile的灵活性和实用性。 在命令书写方面,可以控制命令的可见性、处理命令执行错误、嵌套调用`make`、定义命令包裹(command grouping)以优化执行效率。变量的使用是Makefile的另一大关键,包括基础变量、变量中的变量、高级变量用法、追加变量值、覆盖已有的变量定义、多行变量、环境变量、目标变量和模式变量等,这些提供了灵活的参数管理和复用机制。 最后,Makefile支持条件判断和函数使用,条件判断允许根据特定条件执行不同的构建逻辑,而函数则提供了对字符串和文件名的处理能力,如替换、过滤、排序、提取单词等,增强了Makefile的表达力和功能性。 通过理解和熟练运用这些概念,开发者能够创建高效且易于维护的Makefile,从而简化软件项目的构建过程。