makefile 伪目标
时间: 2023-08-03 16:29:58 浏览: 174
伪目标是一种不与文件名相对应的目标,它不是真正需要生成的文件,而是一个执行特定命令序列的标签。在 Makefile 中,我们可以使用 .PHONY 来声明伪目标。常见的伪目标包括 clean(清除生成的文件)、all(生成所有的可执行文件)、install(安装程序)等等。
在 Makefile 中,伪目标的语法如下:
```
.PHONY: target_name
target_name:
command1
command2
...
```
其中,target_name 是伪目标的名称,command1、command2 等是需要执行的命令序列。
注意,伪目标不会检查其依赖项是否更新,因此每次执行伪目标时,都会执行其下的所有命令。同时,伪目标也不会生成对应的文件,因此如果存在与伪目标同名的文件,Makefile 会优先使用该文件而不执行伪目标。
相关问题
makefile伪目标
Makefile中的伪目标是指那些不对应任何实际文件,只是用来指定一些特殊操作或规则的目标。它们通常以“.”开头,比如“.PHONY”、“.DEFAULT”等。伪目标的作用是告诉make工具在执行时不要将其作为文件名或依赖项来处理,而是按照特定的规则进行处理。
常见的伪目标有:
1. .PHONY:指定一些“虚拟”的目标,比如“clean”、“install”等,用于执行特定的操作而不是生成文件。
2. .DEFAULT:指定默认的目标,当make没有指定目标时,就会执行该伪目标。
3. .SUFFIXES:指定所有可识别的后缀名。
4. .PRECIOUS:指定一些目标,当make被中断时,会将这些目标保存下来,以便下次从这些目标开始继续执行。
5. .IGNORE:指定忽略某些错误,使得make不会因为这些错误而停止执行。
6. .SECONDARY:指定一些目标为次要目标,当这些次要目标被删除或更新时,不会影响其他目标的生成。
Makefile伪目标例子
以下是一个 Makefile 中的伪目标示例:
```
.PHONY: all clean
all: program
program: main.o foo.o bar.o
gcc -o program main.o foo.o bar.o
main.o: main.c
gcc -c main.c
foo.o: foo.c
gcc -c foo.c
bar.o: bar.c
gcc -c bar.c
clean:
rm -f program *.o
```
在上面的示例中,我们定义了两个伪目标:`all` 和 `clean`。`all` 是一个依赖于 `program` 的目标,而 `clean` 则是用于清理生成的文件。由于这两个目标不对应任何实际的文件,因此我们需要使用 .PHONY 声明它们是伪目标,以避免与同名文件冲突。注意,在 `clean` 目标中,我们使用 `rm` 命令删除了生成的二进制文件和目标文件。
阅读全文