2017-04-25 8 views
-1

ディレクトリproject1project2にそれぞれ2つのCプロジェクトがあり、それぞれに独自のincludeディレクトリがあるとします。 project1/srcのソースにproject2のヘッダーファイルを含めることは可能ですか?#include <project2/def.h>def.hproject2/include/def.hに存在しますか?#includeのC:接頭辞

ありがとうございました。 project1/main.c

project1/ 
    - Makefile 
    - include/def.h 
    - main.c 

project2/ 
    - Makefile 
    - include/def.h 
    - main.c 

質問されて、あなたはProject1の中などでのProject2のヘッダを参照AN含めることができます(:

編集:それは明確に、あなたはこれらの2 projetsを持っているとしましょう作るために例えば:

#include <project2/def.h> 

答えは、そのままです。

+0

ファイルはそのプロジェクトに属しているわけではありませんので、それを集約関係と見なしてください。 – CinCout

+0

絶対ファイルパス、またはインクルードステートメント内の適切に構築された相対ファイルパスを使用してください。あなたがその微妙な相対ファイルパスを構築する場合、ファイル名の区切り文字を指定してください – nicomp

+0

MSVCのgcc/clangと '/ I'の' -I'フラグを参照したいかもしれません –

答えて

1

技術的には、をそのまま使用することはできません。

あなたが本当にしたい場合:

あなたは-Iproject2/includeでコンパイルする場合は、あなたがサブディレクトリを作成し、そこにあなたのヘッダーを置く:

#include <project2/def.h> 

が、project2/include/def.hを持って、あなたはそれを処理するための二つの方法があります

project2/include/project2/def.h 

#include <project2/def.h>としてproject1からインクルードします。

それとも、あなたが#include project2/include/def.hが含まれますヘッダーproject2/def.hを作成することができますし、.project2源上記のディレクトリがどこにある-I.を呼ぶことにします。

あなたのproject2ソースディレクトリの名前を知っていることに依存していないので、私の謙虚な意見では、より良い解決策が最初のものです(foobarをローカルに指定すると、 `#include。

+0

これは私が思ったことですが、名前空間にはディレクトリを含めることはできません。 – friedrich

+0

ヘッダーファイルの場所に関係なく、インクルードステートメントでファイルパスをクルーグアップできませんか? – nicomp

+0

@nicomp私はあなたが絶対パス(私が「悪」と考える)またはプロジェクトフォルダ構造全体にわたる相対パス(私は何も良いとは思えません)を持つことになると思います。 – Yunnosch