2017-11-09 11 views
0

私の問題の例をいくつか教えてください。私は2つのディレクトリ、dir1 & dir2を持っているとしましょう。これらのディレクトリのそれぞれには、dir1/fileA.h & dir1/fileB.hという2つのファイルがあります。 dir2のファイル名はdir2/fileA.h & dir2/fileB.hですが、その内容はdir1のものと異なります。私の問題は、dir1/fileA.h & dir2/fileB.hを使用したい場合に発生します。私はDIR1最初が含まれている場合、その後、コンパイラのみdir1の中で両方のfileA.h & fileB.hを参照してください、と私は最初DIR2を置けばDIR2、またはその逆にファイルを無視しますdir2のincludeディレクトリ内の特定のファイルのみを検索し、その特定のディレクトリ内の残りのファイルを除外するコンパイラの作成方法

  INCLUDE_DIRS += \ dir1 \ 

          dir2 

続きますdir1の前にもう一度、dir1ではfileA.hを、dir2ではfileB.hを探すようにコンパイラを作る解決策はありますか?

+2

'#include" dir1/fileA.h "'を実行します。または、シンボリックリンク(またはハードリンク)を使用するか、単純な古いコピーを使用して、必要なファイルだけを含むディレクトリを構築します。あなたがしたいことは、コンパイラが処理できる範囲外であり、コンパイラの外側でそれを解決する必要があります。 – Omnifarious

答えて

0

いいえありません。しかし、あなたのdir1dir2 は、共通のベースディレクトリrootを持っているように次に

dir1 = the-root/path1 
    dir2 = the-root/path2 

ことを、あなたのMakefile

target: source.c 
     gcc -Ithe-root source.c ... 

にコンパイルオプションとして-Ithe-rootを使用して、Cファイルに含まれているとします

#include "path1/fileA.h" 
    #include "path2/fileA.h" 

またはそれが気に入ってもかまいません。

関連する問題