目标与空间符号

时间:2014-01-06 01:29:13

标签: 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

在这种情况下,默认目标的配方始终是执行。但是,如果我们将some_targetfmake交换,则会执行配方,例如我们将fmake: foo.o作为目标和先决条件。但我希望make检查some_target和fmake。由于some_target目录中没有Makefile,我们的配方总是执行。所以,问题是:

是真的吗?
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

1 个答案:

答案 0 :(得分:0)

是的,您的上一次修改是真的。第一种形式在各方面都与第二种形式完全相同(当make看到第一种形式时,它实际上将其存储在内部就像你写了第二种形式一样)