【发布时间】:2017-04-11 20:29:46
【问题描述】:
以下部分在 makefile 中很常见。
OBJS := $(SRCS:%.c=$(OBJDIR)/%.o)
$(OBJDIR)/%.o : %.c
$(CC) $(DEFS) $(CFLAGS) -o$@ $<
现在我的源文件夹包含 C 和 C++ 文件,我想将使用 g++ 创建的所有目标文件链接在一起。但是我如何指定还包含 *.cpp 文件以进行编译。我的意思是如何修改 OBJS 以包含 *.cpp 文件。
对于 OBJDIR,也许,我可以像这样做 C++ 等价物。我猜 makefile 会正确猜到何时使用 CXX(用于 C++ 文件的 g++)以及何时使用 CC(用于 C 文件的 gcc)。
$(OBJDIR)/%.o : %.cpp
$(CXX) $(DEFS) $(CFLAGS) -o$@ $<
那么,我该如何将这条规则添加到 OBJS 中呢?
【问题讨论】:
-
我相信你可以指定两个规则(即
$(OBJDIR)/%.o: %.c ... $(OBJDIR)/%.o: %.cpp ...)。 -
您能否详细说明一下。如果我有 C++ 的 $(OBJDIR_CXX/%.o 和 C 的 $(OBJDIR)/%.o,我如何在此处修改 OBJS?