关于使用C ++标头和makefile,我有两个问题。我知道我拥有所有部件,我只是不确定如何将它们放在一起。
我有以下文件:
main.cpp
Point.cpp
Point.h
Point.h声明了我的简单Point对象,该定义位于Point.cpp文件中。然后在main()
内部,我想创建并使用Point对象。
我是否需要在Point.cpp文件中包含Point.h文件,或者是Makefile需要注意的东西?此外,使用Point对象的main.cpp文件:我是否需要Point.cpp的include或是否可以在Makefile中完成/可以完成?
这里的每个文件应该包括什么以及我的Makefile应该是什么样的?
//从Linux平台独家工作//
答案 0 :(得分:6)
Makefile只不过是在某些文件过期时运行某些命令的方法。 make
程序对C ++几乎一无所知。
你应该在main.cpp和Point.cpp中#include "Point.h"
。如果要在编辑文件时确保make
正确地重建程序,则应明确声明main.o和Point.o为Point.h的依赖项。
这是一个相当简单的例子:
all : point_app
point_app : Point.o main.o
$(LINK.cc) $^ $(LOADLIBES) $(LDLIBS) -o $@
Point.o : Point.h
main.o : Point.h
gcc / g ++和make有一些技巧可以让你自动生成这些头文件的依赖关系,但是由于我已经使用它们来为我提供正确的使用建议,所以它已经太长了。您可以查找gcc的-M...
系列选项的文档作为起点。
答案 1 :(得分:2)
Makefiles对您的标题不起任何作用。您需要手动包含在主手册中才能使用点。
答案 2 :(得分:0)
头文件提供类定义,因此无论您想在何处使用类的对象,都需要提供它的定义(通过包含适当的头文件)。
除非您需要类实现,否则不必包含源(cpp)文件。除非明确实例化类,否则需要对模板类进行此操作。
Makefile定义了构建库或程序的规则,并且不包含头文件。