web-dev-qa-db-ja.com

Xcodeへのシステムヘッダー検索パスの追加

(参照のためにこの質問を投稿し、すぐに回答します)

Xcodeにヘッダー検索パスを追加する方法は?特に、この構文で含める場合:

include <myheader.h>
  1. システムヘッダーのようなすべてのプロジェクトにグローバルにパスを追加します。
  2. 特定のプロジェクトのみにパスを追加します。
53
Eonil

2つのオプションがあります。

  1. Xcodeの設定で[設定]-> [場所]-> [ソースツリー]を確認します。ここで追加されるパスは、システムレベルのパスであり、すべてのプロジェクトに含めることができます。

  2. プロジェクト情報のビルド設定でHEADER_SEARCH_PATHSパラメーターを設定します。ここに"${SRCROOT}"を再帰なしで追加しました。この設定は、ほとんどのプロジェクトに適しています。

2番目のオプションについて:

Xcodeは、GCC互換のコマンドセットを持つClangを使用します。 GCCにはオプション-Idir があり、システムヘッダー検索パスが追加されます。また、このオプションには、Xcodeプロジェクトビルド設定のHEADER_SEARCH_PATHSからアクセスできます。

ただし、この設定に追加されるパス文字列には空白文字を含めないでください。オプションはシェルコマンドにそのまま渡されるためです。

しかし、一部のOS Xユーザー(私のような)は、エスケープする必要がある空白を含むパスにプロジェクトを置くことができます。手動で入力した場合、/Users/my/work/a\ project\ with\ spaceのようにエスケープできます。 "${SRCROOT}"のような環境変数を使用するために、引用符でエスケープすることもできます。

または、.を使用して現在のディレクトリを示します。 Webkitのソースコードでこのトリックを見ましたが、ビルド時に現在のディレクトリがプロジェクトディレクトリに設定されるかどうかはわかりません。

${SRCROOT}は、Xcodeによって事前定義された値です。これは、ソースディレクトリを意味します。より多くの値は リファレンスドキュメント で見つけることができます。

PS。実際には、中括弧{}を使用する必要はありません。 $SRCROOTでも同じ結果が得られます。違いを知っているなら、私に知らせてください。

99
Eonil

プロジェクトレベルの設定に関するEonilの回答をフォローします。ターゲットを選択し、[ビルド設定]タブを選択した状態では、ヘッダー検索パスの検索パスの下にリストが表示されない場合があります。この場合、検索バーで[基本]から[すべて]に変更すると、[検索パス]セクションにヘッダー検索パスが表示されます。

12

完全を期すために引用符を使用する。

"/Users/my/work/a project with space"/**

再帰的でない場合は、/**

4
ToothlessRebel

この質問には答えがありますが、同じ問題が発生したときは、別の方法で解決しました。オプションCreate Folder referencesを使用してフォルダーをコピーすると、この問題が発生しました。その後、build_pathにフォルダを追加する上記のソリューションが機能しました。ただし、Create groups for any added folderオプションを使用してフォルダーを追加すると、ヘッダーが自動的に選択されました。

3
roshi