Makefile 带有空间符号的目标

Makefile 带有空间符号的目标,makefile,target,Makefile,Target,我写了以下的实验: some_target fmake: foo.o $(CC) -o $(TARGET) $(TARGET).c foo.c $(CC) -o $(TARGET2) $(TARGET2).c clean: rm -f fmake test_second CC=$(VAR2) VAR2=gcc TARGET=fmake TARGET2=test_second 在这种情况下,默认目标的配方总是执行。但是,如果我们用fmake交换一些目标,配方将被执行,比如

我写了以下的实验:

some_target fmake: foo.o
    $(CC) -o $(TARGET) $(TARGET).c foo.c
    $(CC) -o $(TARGET2) $(TARGET2).c
clean:
    rm -f fmake test_second
CC=$(VAR2)
VAR2=gcc
TARGET=fmake
TARGET2=test_second
在这种情况下,默认目标的配方总是执行。但是,如果我们用
fmake
交换
一些目标
,配方将被执行,比如我们将
fmake:foo.o
作为目标和先决条件。但是我希望
make
检查
some\u target
和fmake。由于在
Makefile
的目录中没有
some\u target
,我们知道配方总是执行的。所以,问题是:

是真的吗

some_target fmake: foo.o
    $(CC) -o $(TARGET) $(TARGET).c foo.c
    $(CC) -o $(TARGET2) $(TARGET2).c
相当于

some_target: foo.o
    $(CC) -o $(TARGET) $(TARGET).c foo.c
    $(CC) -o $(TARGET2) $(TARGET2).c
fmake: foo.o
    $(CC) -o $(TARGET) $(TARGET).c foo.c
    $(CC) -o $(TARGET2) $(TARGET2).c

是的,您上次的编辑是正确的。第一个表单与第二个表单在各个方面都是相同的(make看到第一个表单时,它实际上会在内部存储它,就像您编写了第二个表单一样)

您预期的错误;第一个目标是默认目标。@OliCharlesworth已编辑