Makefile之空命令

      有时可能存在这样的一个需求,需要定义一个什么也不做的规则(不需要任何执行的命令)。 这样的规则,只有目标文件(可以存在依赖文件)而没有命令行。像这样定义:
target: ;

相关知识规则的命令部分有两种书写方式a. 命令可以和目标:依赖描述放在同一行命令在依赖文件列表后并使用分号(;)和依赖文件列表分开b. 命令在目标:依赖的描述的下一行,作为独立的命令行。 当作为独立的命令行时此行必须以[Tab]字符开始。在 Makefile 中,在第一个规则之后出现的所有以[Tab]字符开始的行都会被当作命令来处理。

这就是一个空命令的规则,为目标“ target”定义了一个空命令。也可以使用独立的命令行格式来定义,需要注意的是独立的命令行必须以[Tab]字符开始。一般在定义空命令时,建议不使用命令行的方式,因为看起来空命令行和空行在感觉上没有区别。大家会奇怪为什么要定义一个没有命令的规则。其唯一的原因是,空命令行可以防止make在执行时试图为重建这个目标去查找隐含命令(包括了使用隐含规则中的命令和“ .DEFAULT”指定的命令。使用空命令的目标时,需要注意:如果需要实现一个不是实际文件的目标,我们只是需要通过使用这个目标来完成对它所依赖的文件的重建动作。首先应该想到伪目标而不是空命令目标。因为一个实际不存在的目标文件的依赖文件,可能不会被正确重建。因此,对于空命令规则,最好不要给它指定依赖文件。避免特殊情况下产生错误的情况。定义一个空命令规则,建议使用上例的格式。


作者:源码人
链接:https://blog.csdn.net/q_z_r_s
声明:任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/q_z_r_s/article/details/80783631