我很新来创建文件,并试图为我的程序绘制依赖关系图,并且可以使用一些帮助来计算出这些依赖关系的细节。我引用this类型的图表,但我的程序包含比该示例更“深层”的依赖关系层,我不确定这些应该如何在make文件中处理。我之后像this。制作具有多个依赖关系的文件依赖关系图
我的程序结构如下:
,其中的箭头的意思是在箭头头部的头文件被包括在箭尾的。没有派生类,如果重要的话。
感谢您的帮助!
我很新来创建文件,并试图为我的程序绘制依赖关系图,并且可以使用一些帮助来计算出这些依赖关系的细节。我引用this类型的图表,但我的程序包含比该示例更“深层”的依赖关系层,我不确定这些应该如何在make文件中处理。我之后像this。制作具有多个依赖关系的文件依赖关系图
我的程序结构如下:
,其中的箭头的意思是在箭头头部的头文件被包括在箭尾的。没有派生类,如果重要的话。
感谢您的帮助!
通过检查,你的Makefile应该是这个样子:(注意,这里使用的自动变量$^
而不是目标文件的显式列表中)
main: main.o ChiSquared.o StatTests.o ChiSquaredTest.o KS.o ChiSquared.o
$(CXX) $(CXXFLAGS) -o main $^
ChiSquared.o: ChiSquared.cpp ChiSquared.h GaussQuad.h
ChiSquaredTest.o: ChiSquaredTest.cpp ChiSquaredTest.h ChiSquared.h GaussQuad.h
KS.o: KS.cpp KS.h ChiSquared.h GaussQuad.h
StatTests.o: StatTests.cpp StatTests.h ChiSquaredTest.h KS.h ChiSquared.h GaussQuad.h
Main.o: Main.cpp StatTests.h ChiSquaredTest.h KS.h ChiSquared.h GaussQuad.h
注意两个东西:
1)我敢打赌,你实际上并不需要#include
所有这些头文件在彼此;在高层使用太多的#include
会导致不必要的依赖,从而导致不必要的重建。
2)没有必要手工维护makefile中的这些先决条件列表; Make可以为你做。但这是一种先进的技术,所以我们先让您的简单makefile工作。
谢谢!我不得不为每个make规则添加一些编译命令,但它似乎正在工作。至于'#include',如果包含另一个类的类使用方法或创建包含类的实例,那么有更好的方法吗? – bcf
奇怪的是,你必须添加这些规则; Make有一个隐含的规则,用于从'%.cpp'建立'%.o',所以不需要。至于'#include',是的,还有更好的方法:如果'StatTests.cpp'使用'KS'的实例并且调用'KS :: foo()',但是'StatTests'没有'KS 'member' *,那么你可以在'StatTests.h'中转发声明'KS',在'StatTests.cpp'中转发'#include KS.h'。这样''main.o'不(必然)依赖于'KS.h'。 – Beta
你可以尝试实现s.th.像这样使用doxygen。 –