Makefile 目标是什么;。cpp.o.:“;是指在生成文件中?
我正在学习GNU makefile。我看到了这一页: 在本文末尾,我发现:Makefile 目标是什么;。cpp.o.:“;是指在生成文件中?,makefile,Makefile,我正在学习GNU makefile。我看到了这一页: 在本文末尾,我发现: 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 $
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 $@
并使用“$(SRC_OBJS)”作为目标,它将编译每个所需对象的所有对象。这不是第一次。有什么区别吗?这是一条后缀规则,告诉我们如何将
文件.cpp
转换为文件.o
以处理任意文件
$谢谢你给我这个名字,我搜索了“后缀规则”,发现它在GNU文档中解释得很好。这就解决了我的问题。@MingchenZhang太好了!Stackoverflow的下一步是向上投票/接受你认为最有用的答案(有时在你这么做之前有最短的时间,或者需要最短的声誉)。
SRC = $(wildcard $(SRC_DIR)*.c)
SRC_OBJS = $(patsubst %.c, %.o, $(SRC))