2011-12-23 11 views
8

私はプロジェクトに取り組んでいます。私は、別のディレクトリからファイルをインポートする方法について、困惑し続けています。ここに私のファイルの一部が編成されている方法です。異なるディレクトリのヘッダファイルを含む?

-stdafx.h 
-core/ 
-->renderer.cpp 
-shapes/ 
-->sphere.h 
-->sphere.cpp 

私はcore/renderer.cppからstdafx.hshapes/sphere.hにアクセスすることができますか?

+0

どのコンパイラを使用していますか? –

+0

Microsoft Visual Studio 2010 –

+0

'../ '表記を使用するには、次の推奨事項に注意してください。 [ヘッダーの相対パスの利点は何ですか](http://stackoverflow.com/questions/597318/)を参照してください。 –

答えて

7

多くの方法があります。たとえば、#include "../stdafx.h"とすることができます。より一般的なのは、インクルードパスにプロジェクトのルートを追加し、#include "shapes/sphere.h"を使用する方法です。または、インクルードパスにヘッダーを含む別のディレクトリを作成します。

+0

どうすればrootを追加できますか? –

+0

設定のどこかにあります。Daveが指摘しているように、それは '/ I'オプションですが、あなたが探しているのはおそらくプロジェクト設定やそれが呼び出されたもので、しばらくVisual Studioを見ていないものです。 –

1

あなたは相対パスを使用できます:

#include "../stdafx.h" 
#include "../shapes/sphere.h" 

またはプロジェクトディレクトリは、あなたのコンパイラに追加するには、パスを含め、通常のようにそれらを参照します。

#include "stdafx.h" 
#include "shapes/sphere.h" 

追加する/Icommand line optionを使用することができますプロジェクト設定でパスを設定するか、パスを設定します。

+0

プロジェクトディレクトリを追加するにはどうすればよいですか?申し訳ありませんが、C++の新機能です –

+0

私はもうVisual Studioを持っていません(私は約1年ほど使っていません)。ただし、** [このページ](http://www.steptools.com/support/stdev_docs/help/settings_vc10.html)**には、プロジェクト設定でパスを追加する場所を正確に示すスクリーンショットがあります。 –

0

これを行う1つの方法は、#include行の一部としてインクルードするヘッダーファイルへの相対パスを含めることです。たとえば:

は、「ヘッダ/ myHeader.h」

は「../moreHeaders/myOtherHeader.h」

は、このアプローチの欠点は、それがであなたのディレクトリ構造を反映するためにあなたを必要とすることであるが含ま含まあなたのコード。ディレクトリ構造を更新した場合、コードはもう機能しません。

より良い方法は、現在のディレクトリでヘッダファイルが見つからない場合に表示されるように、別の場所にヘッダファイルがたくさんあることをコンパイラまたはIDEに伝えることです。これは一般に、IDEプロジェクトの設定に "include path"または "search directory"を設定することで行うことができます。

Visual Studioでは、ソリューションエクスプローラでプロジェクトを右クリックし、[プロパティ]、[VC++ディレクトリ]タブを選択できます。ここから、「ディレクトリを含む」という行が表示されます。そこにインクルードディレクトリを追加してください。

コードでは、[プロジェクト]メニューの[ビルドオプション]を選択し、[ディレクトリの検索]タブを選択します。そこにインクルードディレクトリを追加してください。

g ++を使用すると、-Iオプションを使用して別のインクルードディレクトリを指定できます。

G ++ -oメイン-I /ソース/ main.cppに

を含み、この方法の良いところは、あなたがあなたのディレクトリ構造を変更した場合、あなたは、単一のコンパイラやIDEの設定を変更する必要がありますすべてのコードファイルの代わりに。

関連する問題