gpt4 book ai didi

makefile - Makefile 中的目标 ".cpp.o:"意味着什么?

转载 作者:行者123 更新时间:2023-12-02 22:08:53 25 4
gpt4 key购买 nike

我正在学习 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))

并使用“$(SRC_OBJS)”作为目标,它将编译每个所需对象的所有对象。第一个不会发生这种情况。有什么区别?

最佳答案

这是一个后缀规则告诉make如何转file.cpp进入file.o对于任意 file .

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

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

关于makefile - Makefile 中的目标 ".cpp.o:"意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36521220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com