Objective-C XcodeプロジェクトでCライブラリを使用しようとしています。
ライブラリのディレクトリ構造は次のとおりです。
-- include/
|-- config.h
|-- lib/
| |-- file1.h
| |-- file2.h
| |-- file3.h
ライブラリのドキュメントには、file1.hが含まれ、file1.hにはfile2.hとfile3.hが含まれていると書かれています。
File2.hとfile3.hのインクルードで「ファイルが見つかりません」というエラーが表示されます。これらは、次の方法でfile1.hに含まれています。
#include <lib/file1.h>
#include <lib/file2.h>
here と読みます。これらの山括弧は、#includeを含むファイルと同じディレクトリで検索するのではなく、INCLUDE環境変数で指定されたパスに沿ってインクルードファイルを検索するようにプリプロセッサに指示します。
そこで、Product-> Edit Scheme ..に移動してXcodeにINCLUDE環境変数を追加し、/the-whole-path-to/include/
ただし、ファイルが見つからないというエラーがまだ発生しています。
File1.hを次のように変更すると、ファイルは正常にインクルードされます。
#include "file2.h"
しかし、私はむしろライブラリ内のすべてのファイルに対してそれをしたくない。
どうすれば修正できますか?
理解した。
あなたがしなければならないのは、「Iフラグ」をビルド設定の「その他のCフラグ」の下に追加することです
したがって、ターゲットのビルド設定で「その他のCフラグ」を検索し、-I/path-to-include/
スクリーンショットは次のとおりです。
XCodeのバージョン5.0.2では、これを実現する最良の方法は、おそらくターゲットの「検索パス」ペインに追加することです。これを見つけることは(私にとって)信じられないほど直感的ではありませんでした。私と同じように混乱している人のために、ここに私がどのように着いたかがあります:
左の列で、Project Navigatorアイコン(フォルダーのように見える)をクリックします。次に、プロジェクトのエントリをクリックします。これにより、メインペインに多数の設定が表示されます。このペインの上部にある[ビルド設定]をクリックします。これにより、[検索パス]というエントリを含む多数のエントリが表示されますが、ここに検索パスを追加することはできません。一方、このペインの上部にあるプロジェクトの名前がプルダウンであることが判明するまで、このプルダウンからtargetを選択すると、ダブルクリックできるようになります。 「ヘッダー検索パス」をクリックして、必要な編集を実行します。
ああ、クレイジーなGUIの喜び。
プロジェクトのビルド設定を使用して、Xcode 5.0.1でこれを解決しました(JohnとIanが上記のとおりですが、50 rep未満のためコメントできません)。
新しい情報:
ser Header Search Pathsにincludeを追加するとき、Always Search User PathsをYesに変更する必要もありました。
(ユーザー以外の)ヘッダー検索パスにインクルードを追加する場合、常にユーザーパスを検索する必要はありません。
これを試して:
1-左側のXcodeペインでプロジェクトファイルを選択します
2-中央のXcodeペインでプロジェクトが選択されていることを確認します
3-中央のXcodeペインの上部にある[ビルド設定]を選択します
4-[ビルド設定]のすぐ下に[すべて]と[結合]が選択されていることを確認します
5-「ビルド設定」のすぐ下の検索フィールドにヘッダーを入力します
中央のペインに、編集可能な検索パスフィールドが表示されます。
これは機能しますが、おそらく「検索パス」タブの下に置く方が良いでしょう。
「その他のCフラグ」を使用するか、「HEADER_SEARCH_PATHS」を使用してインクルードパスを指定し、実行可能ファイルのヘッダーを検索できます。