ビルド失敗のトラブルシューティング
旧式の Always Search User Paths ビルド設定を使用する場合
遺産のビルドシステムは、Always Search User Paths ビルド設定をサポートしますが、これにより、Xcode は、#include <header.h> スタイルのインクルードを使用している場合でも、システムヘッダー検索パスの前に常にユーザヘッダ検索パスを検索し、Xcode プロジェクトがそれらを明示的に参照する必要なしにディスク上にあるユーザヘッダを検索します。この機能は Xcode 8.3 以降旧式であり、新しいビルドシステムではサポートされていません。プロジェクトがこの機能に依存している場合は、ビルド設定またはソースファイルを変更して使用を停止する必要があります。
"Always Search User Paths" ビルド設定が有効になっているターゲットをビルドすると、以下のような警告が表示されます。
warning: Traditional headermap style is no longer supported; please migrate to using separate headermaps and set 'ALWAYS_SEARCH_USER_PATHS' to NO.
(警告 : 従来のヘッダマップスタイルはサポートされなくなりました。別のヘッダマップを使用するように移行し、"ALWAYS_SEARCH_USER_PATHS" を 「NO(いいえ)」に設定してください。)
このエラーは、filename.h が #import <filename.h> のようなディレクティブでファイルに含まれていることを示している可能性があります。このような角括弧インクルードは、<Foundation/Foundation.h> などのフレームワークスタイルのインクルード、または <string.h> などのシステムヘッダーを含めることを目的としています。
- この場合、filename.h はプロジェクトの一部として直接インクルードされているため、代わりに引用のインクルード (#import "filename.h") を使用するようにディレクティブを変更してください。
これは、見つからないヘッダがプロジェクトによって参照されていないことを示している可能性があります。
この問題を修正するには、以下の手順に従います。
- ヘッダがディスク上に存在する場合は、ファイル参照としてヘッダをプロジェクトに追加します。ファイル参照を作成するには、既存のファイルとフォルダーを追加する ときに、[Copy items if needed(必要に応じてアイテムをコピー)] チェックボックスを非選択にします。
- ファイル参照を追加した結果、プロジェクトに同じ名前のヘッダが複数含まれている場合は、そのヘッダーをターゲットに追加します。