.cpp到Makefile中的.o文件

时间:2014-08-18 12:02:48

标签: makefile

如何使用Makefile生成目录中所有.cpp文件对应的.o文件? 我有一个包含.cpp文件的目录。现在,我想在.o文件中编译它们。 .o文件的名称应与相应的.cpp文件相同。我该怎么办?

实际上,我已经有了一个实现,但我不确定它是如何工作的

SRCS := $(wildcard $(SRCDIR)/*.cpp)
OBJS := $(SRCS:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o)

$(OBJS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp
            // Recipe //

1 个答案:

答案 0 :(得分:3)

试试这个

SRCS=$(wildcard *.cpp)
OBJS=$(SRCS:.cpp=.o )

%.o: %.cpp 
   $(CC) -c $< -o $@

让我再加上一些解释。

SRCS := $(wildcard $(SRCDIR)/*.cpp) - 它会列出SRCDIR目录下的所有.cpp文件,并将分配给SRCS

OBJS := $(SRCS:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o) - 它会将上述语句中列出的.cpp所有文件替换为.o例如:main.cpp将更改为main.o并分配给OBJS < / p>

$(OBJDIR)/%.o : $(SRCDIR)/%.cpp - 目标文件取决于各自的.cpp文件,并且在规则中您可以编写规则来创建目标文件

%字符可用于通配符模式匹配,以提供通用目标。例如:

%.o: %.c
[TAB] actions

%出现在依赖关系列表中时,它将替换为用于在目标中执行替换的相同字符串。

如果上述说明不清楚,只需仔细阅读Makefile Basics,尝试不使用特殊变量进行编写,然后转到复杂的规则。

相关问题