对于 C++ 文件,Makefile 中有一条隐式规则,使用 .C 或 .cc 扩展名。但我通常有 C++ 源代码的 .cpp 文件扩展名。
如何对 .cpp 文件使用 Makefile 的隐式规则?
请参阅隐式规则目录:
编译 C++ 程序
no 是从 n.cc、n.cpp 或 nC 自动生成的,其配方格式为“$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c”。我们鼓励您对 C++ 源文件使用后缀“.cc”而不是“.C”。
这是来自GNU make docs。
模式规则的先决条件中的“%”代表与目标中的“%”匹配的相同词干。为了应用模式规则,其目标模式必须与所考虑的文件名匹配,并且其所有先决条件(在模式替换之后)必须命名存在或可以生成的文件。这些文件成为目标的先决条件。因此,形式的规则
%.o : %.c ; recipe...
指定如何制作一个文件no,以另一个文件nc为前提,前提是nc存在或可以制作。
所以你可以尝试类似的东西
%.o : %.cpp %.hpp
$(CC) $(CFLAGS) $@