我正在为实验编写以下内容:
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_target
与fmake
交换,则会执行配方,例如我们将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
答案 0 :(得分:0)
是的,您的上一次修改是真的。第一种形式在各方面都与第二种形式完全相同(当make看到第一种形式时,它实际上将其存储在内部就像你写了第二种形式一样)