如何在修改c ++头文件时重新编译?

时间:2013-11-01 12:21:21

标签: c++ header makefile

我在include / c ++文件夹中有一个* .H c ++标题,但是即使我修改了这些文件,make make还没有重新制作,当修改这些文件时,我可以修改我的Makefile以重新制作吗?

2 个答案:

答案 0 :(得分:6)

如果您正在使用GNU make和GCC,并为每个源构建单独的对象(而不是直接从所有源构建程序),您可以自动生成必要的依赖项。添加以下编译器的命令行参数:

-MD -MP

-MD将在每个对象旁边生成一个.d文件,其中包含指定所依赖的所有标头的make规则。如果您不希望这些标题发生变化,您可以使用-MMD排除系统标题(<>包含的标题而不是"")。 -MP将生成虚拟规则,以确保在删除任何标头时重建目标。

然后使用.d包含makefile中的所有-include个文件,这样如果它们丢失则不是错误。我这样做是通过转换目标文件列表来实现的:

-include $(all_objs:.o=.d)

答案 1 :(得分:2)

确保您的目标取决于您的标题。

your_app: $(SOURCES) $(HEADERS)
  $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(SOURCES) $(LIBS) -o$@