2

私は静的ライブラリを使用しており、ヘッダーが含まれるフォルダーに Xcode を向けています。これらのヘッダーは、階層フォルダー構造で編成されています。

headers:
 - a.h
 - b.h
 - subheaders:
    - c.h
 - moreheaders:
    - d.h

また、このライブラリを使用する事前に作成されたソース コードもいくつかあり、場所に基づいてヘッダーを参照しています: #import "subheaders/c.h".

ただし、Xcode はフォルダー階層をフラットにするため、#import "c.h". かなりの量のコードがあり、フォルダー化されたインポートの使用をやめるためにコードを簡単に書き直すことはできません。Xcodeにフォルダ構造を認識させる方法はありますか?

PSプライマリ ターゲットの下にある「ライブラリ検索パス」 「ヘッダー検索パス」ビルド設定を使用して、これらのヘッダーを含めています。検索は非再帰的であるため、ネストされたヘッダーを見つける方法さえわかりません...

ご協力いただきありがとうございます!

4

3 に答える 3

1

Xcode はデフォルトでヘッダー マップを構築し、ヘッダー マップはフラットです。ただし、マップがModuleName/Header.h. Xcode がこれらのマップを作成する方法、存在する設定、およびファイルがマップに見つからない場合のコンパイラの動作の詳細については、この回答を参照してください

適切なヘッダー検索パス (HEADER_SEARCH_PATHSまたはUSER_HEADER_SEARCH_PATHS) を設定すると、ヘッダー マップが使用されているかどうかに関係なく、パス インクルードが可能になりますが、その場合でも平坦化されたインポートは機能します。フラット化されたインポートを機能させたくない場合は、他の回答に示すように、ヘッダー マップを無効にするか、問題のヘッダー ファイルがマップに追加されないようにする必要があります。

于 2020-08-28T12:12:57.213 に答える
0

残念ながら、これは私が注意を怠っただけのケースです。検索パスにヘッダーを追加しましたが、以前にソースとしてプロジェクトに追加していました (そのように機能するかどうかを確認するため)。ソース フォルダーを削除し、ヘッダーの検索パスを保持すると、フル パスでファイルを参照できました。助けてくれてありがとう。

于 2013-07-03T00:58:54.263 に答える