2012-04-11 220 views
2

我有一个makefile为两个类(和主)创建目标文件,其中一个类只是在.h文件中定义的。在我的makefile我有这样一行如何在makefile中编译.h文件?

FileName.o: FileName.h 
    g++ -c FileName.h 

但是当我尝试编译它说,它无法找到FileName.o

我必须为了得到这个创建FileName.cpp编译?

+3

一般来说,想要只编译一个头文件而不是'#include'将其包含到某个实际的源文件中意味着您需要重构您的代码。或者可能完全重新思考。 – geekosaur 2012-04-11 19:48:25

+0

编译是什么生成的目标文件...你是否意味着当你尝试链接? – AJG85 2012-04-11 19:48:49

回答

3

你在FileName.h某处使用你的类,不是吗?因此,至少有一个.cpp文件应该包含#include "FileName.h",而.h的代码将使用该.cpp编译,而不需要单独编译.h的代码。

+0

谢谢!这工作 – JDN 2012-04-11 20:10:54

4

您通常不会尝试自行编译头文件(.h)。将它包含在一个空的.cpp文件中可以让你编译它并生成一个.o文件,但是它可能不会做太多(如果有的话)真正的好东西,除非你把东西放在不真正属于的头文件中在标题中。

+0

这个班真的很小,由朋友班操纵。即使它不是标准协议,是否有任何方法可以创建并从该.h文件中创建对象文件? – JDN 2012-04-11 19:54:03

+0

@JDN你应该在需要的地方包含.h。不需要单独编译它。 – Collin 2012-04-11 19:55:05