2011-12-18 10 views
1

MacOS XでXcodeを使用しているC++プロジェクトに取り組んでいます。現在、Code :: Blocks IDEを使用してLinuxに移植し始めています。異なるIDEを使用して別々のディレクトリに#includeする方法は?

私のソースファイルの多くは別々のディレクトリにあり、それらを含む問題が発生しています。ここで

は、この問題の例である:

folder1/foo.h 

folder2/dog.h 

foo.h includes dog.h with: `#include "dog.h"` 

両方のファイルならばそれは同じプロジェクトにXcodeの上正常に動作しますが、私はコード::ブロックでそれをしようとした場合、それはそれを見つけるのエラーが発生しました。残念ながら、これはファイルを見つけることができることから、Xcodeのを止めること

#include "../folder2/dog.h"

私は相対を使用するコードを変更することで、コード::ブロックでこの問題を解決することができますは、次のようなパスが含まれています。

複数のIDEで同じコードをコンパイルできるように、この問題をどのように修正できますか?私は同じフォルダにすべてのソースを投げないようにしたいと思います。与えられたコンパイラ/ IDEは、依存関係を検索する方法

#if XCODE 
#include "dog.h" 
#else 
#include "../folder2/dog.h" 
#endif 
+3

移動します。 :オプションをブロックし、インクルードディレクトリを設定します。 – Lalaland

+0

@EthanSteinberg一度セットアップしたら、#include "dog.h"のようなファイルを直接インクルードできるはずですか? –

+0

これはインクルードディレクトリの設定の主なポイントの1つです。 – Lalaland

答えて

3

その1つのプロジェクトが一つだけ共通のディレクトリが含まれていますので、あなたの構造を並べ替え:

/project/ 
     /src/*.cpp 
     /include/*.hpp 
       /folder1/dog.hpp 
       /folder2/cat.hpp 

は今#include <config.hpp>#include <folder1/dog.hpp>などを言うと、あなたのコンパイラフラグに追加します。コードに

-I ${PROJECT_DIR}/include 
+0

ヘッダーファイルを対応するソースファイルの横に配置する場合はどうすればよいですか? IDEに '-I'設定がない場合はどうなりますか? –

+0

@Oli適切なIDEは、イン​​クルードヘッダファイルを探す場所を指定する方法があります。明示的にサポートされていない場合は、追加のコンパイラスイッチとして手動で追加するだけです。 – greatwolf

+0

+1ソースファイルの再構成。これは通常どのようなやり方で行われているのですが、これには多くのオープンソースプロジェクトが続いています。 – greatwolf

3

が、残念ながら、完全にコンパイラ/ IDE-特有の、次のとおりです。私は次のようにプリプロセッサ文を使用する必要があります。これをすべての開発環境で尊重されるように配置する方法はありません。

私はXcodeやCodeblocksについてよくわかりませんが、#includeファイルを探す場所を制御するプロジェクト設定が必要です。

+0

IDEのインクルードパスを設定することで、すべてのフォルダをインクルードすることをお勧めしますか? –

+0

@Justin - 他のIDEでもプロジェクトにファイルを追加することができます。その場合、Xcodeのように動作します。そうでなければ、おそらくインクルードディレクトリのリストを追加することができます。 –