2012-04-11 7 views
2

私は、2つのクラス(およびmain)のオブジェクトファイルを作成するmakefileを持っています。これらのクラスの1つは.hファイルで定義されています。私のメイクファイルでは、私はメイクファイルで.hファイルだけをどのようにコンパイルしますか?

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

を言うラインを持っているが、私はコンパイルしようとすると、それは

FileName.o

を見つけることができないと言う私がこれを取得するためにFileName.cppを作成する必要がありますかコンパイル?

+3

一般に、ヘッダファイルを実際のソースファイルに '#include 'するのではなく、単にコンパイルしたいと思っているときは、コードをリファクタリングする必要があります。または、それを完全に再考するかもしれない。 – geekosaur

+0

コンパイルはオブジェクトファイルを生成するものです...リンクしようとしたらどういう意味ですか? – AJG85

答えて

3

FileName.hのクラスをどこかで使用していますか? .cppファイルの少なくとも1つに#include "FileName.h"が含まれていて、.hのコードがこの.cppでコンパイルされ、.hのコードを別途コンパイルする必要はありません。

+0

ありがとう!それは働いた – JDN

4

通常、ヘッダー(.h)ファイルを単独でコンパイルしようとはしません。そうでなければ空の.cppファイルにインクルードすると、コンパイルして.oファイルを生成できますが、ヘッダーに本当に属していないものを置かない限りヘッダーに挿入します。

+0

クラスは本当に小さく、フレンドクラスによって操作されます。標準的なプロトコルではないにもかかわらず、.hファイルからファイルを作成してオブジェクトを作成する方法はありますか? – JDN

+0

@ JDN必要な場所に.hを含めてください。別々にコンパイルする必要はありません。 – Collin

関連する問題