gcc は-I-
オプションを提供します。このオプションでは、 の-I
前のディレクトリ-I-
で引用符で囲まれたインクルード ( #include "foo.h"
) が検索され、-I
次のディレクトリ-I-
で括弧で囲まれたインクルード ( ) が検索#include <foo.h>
されます。
-I-
別の非常に重要な効果があります。#include
が含まれているソース ファイルのディレクトリをデフォルトの検索パスから削除します。通常、引用符で囲まれたインクルードは常にソース ファイルのディレクトリを検索し、どのディレクトリよりも先に-I
検索します。 -I-
したがって、優先されるデフォルトのパスを削除することにより、引用符で囲まれたインクルード ファイルの場所を希望の順序で正確に指定できます。
それで、私は私の質問に答えたようですね。いいえ。今使用する-I-
と、次の厄介なグラムが表示されます。
cc1: note: obsolete option -I- used, please use -iquote instead
問題は、現在のディレクトリが検索パスから削除され-iquote
ないことです。に何を提供しても、常に最初に検索され-iquote
ます。
問題は-I-
、 を使用せずに と同じ効果を得るにはどうすればよいかという-I-
ことです。
詳細:
ファイルが次のように配置されているとします。
srcdir/
configure
file1.c
file2.c
config.h
builddir/
Makefile
file1.o
file2.o
config.h
libpudding.a
config.h
さまざまな理由から、から削除することはできませんsrcdir
(他のプラットフォームでのビルド プロセスに影響を与えます)。ただし、 inよりもconfig.h
frombuilddir
を優先して含めたいと考えています。zconf.h
srcdir
これは GCC の-I-
フラグで実現できますが、それ以外の場合は不可能のようです。
更新された質問:
わかりました、GNU CC 開発者は非推奨のようです-I-
が、その機能を達成するための代替方法を提供していませんでした。したがって、私の更新された質問は次のとおりです。これを開発者の注意を引くための最も効果的な方法は何ですか。これにより、どちらか-I-
が廃止されない可能性が高くなります(指定を処理する非常にエレガントな方法であるため、これが最も望ましいと思います)検索、-iquotexxx よりもはるかに見苦しくありません)、または引用符で囲まれたインクルード検索パスから現在のディレクトリを削除する方法が提供されていますか?