Makefile隐式规则匹配.c或.cpp

Makefile隐式规则匹配.c或.cpp,makefile,Makefile,我正在尝试向Makefile添加一个隐式规则,我希望它以相同的方式处理.c和.cpp文件的编译。我对.c文件的规则如下: %.obj: %.c cl /c $(CFLAGS) $< %.obj:%.c cl/c$(CFLAGS)$< 不过,我希望模式的右侧匹配.c或.cpp,这取决于可用的文件。这可能吗?我已经仔细阅读了制造手册,但还没有找到我要找的东西。任何帮助都将不胜感激。只需使用两条规则,这两条规则相当于make语言中的“or”: %.obj: %.c cl /c

我正在尝试向Makefile添加一个隐式规则,我希望它以相同的方式处理.c和.cpp文件的编译。我对.c文件的规则如下:

%.obj: %.c
    cl /c $(CFLAGS) $<
%.obj:%.c
cl/c$(CFLAGS)$<

不过,我希望模式的右侧匹配.c或.cpp,这取决于可用的文件。这可能吗?我已经仔细阅读了制造手册,但还没有找到我要找的东西。任何帮助都将不胜感激。

只需使用两条规则,这两条规则相当于make语言中的“or”:

%.obj: %.c
    cl /c $(CFLAGS) $<

%.obj: %.cpp
    cl /c $(CFLAGS) $<
%.obj:%.c
cl/c$(CFLAGS)$<
%.obj:%.cpp
cl/c$(CFLAGS)$<

最后,这是两种不同的源语言,您可能最终需要不同的标志。

只需使用两条规则,这两条规则相当于make语言中的“or”:

%.obj: %.c
    cl /c $(CFLAGS) $<

%.obj: %.cpp
    cl /c $(CFLAGS) $<
%.obj:%.c
cl/c$(CFLAGS)$<
%.obj:%.cpp
cl/c$(CFLAGS)$<

最后,这是两种不同的源语言,您可能最终需要不同的标志。

啊,太棒了,谢谢!我误解了手册中的某些内容,认为上面的内容将覆盖以前的规则,而不是作为OR,因此我甚至没有尝试过。非常感谢!想想看,它更像是一个
开关
或简单的替代品——这些毕竟是不同的源文件。啊,太棒了,谢谢!我误解了手册中的某些内容,认为上面的内容将覆盖以前的规则,而不是作为OR,因此我甚至没有尝试过。非常感谢!想想看,它更像是一个
开关
或简单的替代品——它们毕竟是不同的源文件。