Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 两个没有依赖关系的目标_Bash_Makefile - Fatal编程技术网

Bash 两个没有依赖关系的目标

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

考虑以下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=$(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仅在目标不存在(并且不是虚假的)或者比其依赖项“旧”时才运行该规则。此规则适用于所有目标,包括顶级目标。