Bash 两个没有依赖关系的目标
考虑以下makefile:Bash 两个没有依赖关系的目标,bash,makefile,Bash,Makefile,考虑以下makefile: TARGET=fmake TARGET2=test_second fmake: $(TARGET2).c foo.c\ $(TARGET).c test.h clean $(CC) -o $(TARGET) $(TARGET).c foo.c $(CC) -o $(TARGET2) $(TARGET2).c foo.c: echo Some text clean: rm -f fmake test_second CC=$(VA
TARGET=fmake
TARGET2=test_second
fmake: $(TARGET2).c foo.c\
$(TARGET).c test.h clean
$(CC) -o $(TARGET) $(TARGET).c foo.c
$(CC) -o $(TARGET2) $(TARGET2).c
foo.c:
echo Some text
clean:
rm -f fmake test_second
CC=$(VAR2)
VAR2=gcc
执行make
bash命令后,将显示以下内容
rm -f fmake test_second
gcc -o fmake fmake.c foo.c
gcc -o test_second test_second.c
如前所述,foo.c不会被处理,因为这个目标没有依赖项。但是
foo.c
和clean
都没有依赖关系,但是clean是处理的
。为什么?因为存在名为foo.c
的文件,而不存在名为clean
的文件。所以Make认为一个人需要被制造。请注意,clean
实际上应该声明为。正如我理解的那样,首先制作
工具,查找在考虑的目标中声明的依赖项,如果存在依赖项,则开始处理其中一个。如果没有针对特定依赖项的规则,则使用dependencie的名称开始更新文件。如果我们的目标中没有依赖项,那么make
查找名称为目标名称的文件。如果未找到文件,则正在处理此规则。我的理解正确吗?但是默认目标是什么呢?默认目标处理是否总是?@Dmitri:简单地说,Make仅在目标不存在(并且不是虚假的)或者比其依赖项“旧”时才运行该规则。此规则适用于所有目标,包括顶级目标。