目标是什么" .cpp.o:"在Makefile中意味着什么?

时间:2016-04-09 18:52:30

标签: makefile

我正在学习GNU makefile。我看到了这个页面:http://mrbook.org/blog/tutorials/make/

在本文结尾处,我发现了这一点:

CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(CC) $(CFLAGS) $< -o $@

有人可以解释OBJECT变量中的内容以及.cpp.o:的目标(也是$<)吗?

当我使用类似的东西时,我也发现了:

SRC = $(wildcard $(SRC_DIR)*.c)
SRC_OBJS = $(patsubst %.c, %.o, $(SRC))

并使用&#34; $(SRC_OBJS)&#34;作为目标,它将为每个所需对象编译所有对象。这不会发生在第一个问题上。有什么区别?

1 个答案:

答案 0 :(得分:5)

后缀规则告诉您如何将file.cpp转换为file.o任意file

$<是引用源文件的自动变量,在后缀规则的情况下为file.cpp

$@是引用目标文件file.o的自动变量。