Makefile 从源文件生成对象文件的通用“make”规则

Makefile 从源文件生成对象文件的通用“make”规则,makefile,nmake,Makefile,Nmake,我将所有源文件都放在名为src的目录中,我希望所有目标文件都放在obj目录中。可以编写一个通用的make规则(最好也可以与nmake一起使用),该规则将生成与源文件对应的目标文件并将其放置在正确的目录中?对于GNU make,您可以使用模式规则,如下所示: SRCDIR = src OBJDIR = obj $(OBJDIR)/%.o : $(SRCDIR)/%.c $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< SRCDIR=src O

我将所有源文件都放在名为
src
的目录中,我希望所有目标文件都放在
obj
目录中。可以编写一个通用的
make
规则(最好也可以与
nmake
一起使用),该规则将生成与源文件对应的目标文件并将其放置在正确的目录中?

对于GNU make,您可以使用模式规则,如下所示:

SRCDIR = src
OBJDIR = obj

$(OBJDIR)/%.o : $(SRCDIR)/%.c
        $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
SRCDIR=src
OBJDIR=obj
$(OBJDIR)/%.o:$(SRCDIR)/%.c
$(CC)$(CPPFLAGS)$(CFLAGS)-c-o$@$<

使用nmake,您可以对路径使用推理规则:

{src\}.c{obj\}.obj:
        $(CC) $(CFLAGS) -c -o $@ $<
{src\}.c{obj\}.obj:
$(CC)$(CFLAGS)-c-o$@$<

例如,在GNU make中这样做很简单。“我不知道在nmake怎么做,”疯狂的科学家说,“我该怎么做?”?我只找到了
.c.o
语法,它将c源代码转换为同一目录中的目标文件。