我目前在我的项目中具有.c和.cpp文件格式的文件。我想自动在Makefile中生成目标文件,以根据文件的可用性动态选择.c或.cpp文件。
当前,
obj/%.o : %.cpp
$(CXX) $(MKDEPEND) -c -o $@ $(CFLAGS) $(INCDIRS) $<
样本解决方案
obj/%.o : %.cpp (OR) %.c
$(CXX) $(MKDEPEND) -c -o $@ $(CFLAGS) $(INCDIRS) $<
对此有什么解决方案?谢谢。
只需制定两个不同的规则。无论如何,您都不想使用相同的配方(您不想使用C ++编译器来编译C代码)。
obj/%.o : %.cpp
$(CXX) $(MKDEPEND) -c -o $@ $(CXXFLAGS) $(INCDIRS) $<
obj/%.o : %.c
$(CC) $(MKDEPEND) -c -o $@ $(CFLAGS) $(INCDIRS) $<
[Make将尝试同时匹配这两个规则,并使用其中一个匹配项,而忽略其他匹配项。