如何使用 Makefile 生成与目录中所有 .cpp 文件相对应的 .o 文件?我有一个包含 .cpp 文件的目录。现在,我想在 .o 文件中编译它们。.o 文件的名称应与相应的 .cpp 文件相同。我该怎么办?
实际上,我已经有了一个实现,但我不确定它是如何工作的
SRCS := $(wildcard $(SRCDIR)/*.cpp)
OBJS := $(SRCS:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o)
$(OBJS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp
// Recipe //
Run Code Online (Sandbox Code Playgroud)
尝试这个
SRCS=$(wildcard *.cpp)
OBJS=$(SRCS:.cpp=.o )
%.o: %.cpp
$(CC) -c $< -o $@
Run Code Online (Sandbox Code Playgroud)
让我添加一些更多的解释。
SRCS := $(wildcard $(SRCDIR)/*.cpp)- 它将列出目录下的所有 .cpp 文件SRCDIR并将分配给SRCS
OBJS := $(SRCS:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o)- 它将上面语句中列出的所有带有 .cpp 的文件替换为.oex:main.cpp将更改为main.o并分配给 OBJS
$(OBJDIR)/%.o : $(SRCDIR)/%.cpp- 目标文件取决于各自的.cpp文件,在规则中您可以编写规则来创建目标文件
该%字符可用于通配符模式匹配,以提供通用目标。例如:
%.o: %.c
[TAB] actions
Run Code Online (Sandbox Code Playgroud)
当%出现在依赖项列表中时,它被替换为用于在目标中执行替换的相同字符串。
如果上面的解释不清楚,只需阅读 Makefile Basics 一次,尝试在不使用特殊变量的情况下编写,然后转到复杂的规则。
| 归档时间: |
|
| 查看次数: |
3045 次 |
| 最近记录: |