1

ここに短い話があります

最近、私はのコンパイルプロセスを追跡しようとしましたMakefile. によるとEDK override mechanism、コンポーネントはオーバーライド パスの下の同じ名前のソース コードを使用してコンパイルされ、コンポーネントのディレクトリの下に残ります。

同じ名前のヘッダー ファイルが 2 つあるとします。ディレクトリ パスは次のとおりです。

コンポーネント ディレクトリ -D:\outside\inner\hello.h
オーバーライド ディレクトリ -D:\outside\inner\overrides\hello.h

そのため、D:\outside\inner\overridesコンパイル中に使用されます。

しかし、ここで質問です!

インクルード パスを示すマ​​クロを Makefile に追加できることがわかっています。例えば:

INC = -I D:\outside\inner

次に、次のような別のインクルード パスを追加しました。

INC = $(INC) -I D:\outside\inner\overrides

次のように Makefile でコマンドを設定した場合:

hello : hello.c hello.h
<Tab>gcc -c hello hello.c $(INC)

コンパイラは引き続きオーバーライド パスの下にある hello.h ファイルを取得しますか? それとも、INC パス (コンポーネント パス) を介して最初に見つかったファイルを取得しますか?

回答ありがとうございます。

4

1 に答える 1

1

gccインクルード パスで最初に見つかったヘッダーを使用します。ヘッダー ファイルの 1 つで意図的に構文エラーを作成し、エラー メッセージを探して、これを再確認できます。または、これをオーバーライド ヘッダーに入れます。

 #warning "using overrides header"

警告メッセージを探します。

于 2012-12-22T08:06:17.310 に答える