C ++包括和Makefile

时间:2011-02-14 10:09:11

标签: c++ include makefile dependencies

关于使用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平台独家工作//

3 个答案:

答案 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定义了构建库或程序的规则,并且不包含头文件。