2011-02-14 42 views
0

我有一个关于使用C++头文件和makefile的双重问题。我知道我拥有所有的零件,但我不知道如何将它们放在一起。C++包含和Makefiles

我有以下文件:

main.cpp 
Point.cpp 
Point.h 

Point.h声明我简单点对象,定义是Point.cpp文件中。然后在main()里面我想创建并使用Point对象。

我是否需要将Point.h文件包含在Point.cpp文件中,还是需要关注Makefile?另外,使用Point对象的main.cpp文件:我是否需要一个包含Point.cpp的文件,或者是否可以在Makefile中完成/可以完成哪些内容?

这里应该包含哪些文件,以及我的Makefile应该是什么样子?

//从Linux平台上工作的独家//

+0

您正在使用哪个平台,Windows,Linux ...? – Tony 2011-02-14 10:13:34

+0

@Tony Linux独占 – Prospero 2011-02-14 10:36:58

回答

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 [email protected] 

Point.o : Point.h 

main.o : Point.h 

的gcc/g ++以及让有技巧,使您能够自动生成这些头文件的依赖性,但它已经太久太久,因为我用他们给我为他们的使用提供适当的建议。您可以查看gcc的-M...系列选项的文档作为起点。

2

Makefiles对您的标题不做任何处理。你需要手动加入你的主体才能使用点。

0

头文件提供了类定义,因此无论您想要使用某个类的对象,都需要提供它的定义(通过包含适当的头文件)。

除非需要类实现,否则不需要包含源文件(cpp)。这需要为模板类完成,除非该类是明确实例化的。

Makefiles定义构建库或程序的规则,但不包含头文件。