2016-08-31 4 views
1

私はC++コードのいくつかを変更しているAndroidを変更しようとしていますが、ヘッダーに関連する問題に直面しています。C++ヘッダーの依存性

セイファイルfoo.cでは、私はbar.hを含める必要がありますが、それは別のフォルダに座っている:

:同じフォルダ(dir2)からファイルbaz.hが含まれて順番に

../../dir1/dir2/bar.h

bar.h​​

最初にbar.hを次のように含めることを試みました:

#include "../../dir1/dir2/bar.h"

しかし、彼らはbar.hbaz.hを見つけることができません。

MakefileINC=-I../../dir1を追加しようとしましたが、機能しません。どんな提案も役に立ちます。

+0

gccが使用しているすべてのコンパイルフラグをダンプしようとしましたか?私はmakeに冗長モードのようなものがなければならないと考えています – szx

答えて

3

bar.hとbaz.hが同じディレクトリにあるので、bar.hに次のように使用します。

#include "baz.h" 

ためにはfoo.cの中#include bar.hに、あなたは多くの選択肢を持っています。例えば。

選択肢1:

#include "../../dir1/dir2/bar.h" 

-I.してコンパイルします。 -I.も省略できます。

選択肢2:

#include <bar.h> 

-I../../dir1/dir2してコンパイルします。

選択肢3:

#include <dir1/dir2/bar.h> 

-I../..してコンパイルします。

#include foo.cでのbar.hの選択方法は、コードの残りの部分がどのように構造化されているか、またプロジェクトでのモジュール性の定義についてのより大きな見方によって決まります。

+1

** Choice 1 **については、実際には '-I'フラグ – Zereges

+0

@Zeregesは実際には必要ありません。 –