Objective-CとSwiftソースファイルが混在したフレームワークを構築しています。
module.modulemapという独自のモジュールマップファイルを作成しました。フレームワークmodule.modulemapの傘のヘッダをコンパイラに表示させるにはどうすればよいですか?
私の問題は、私は絶対パスに入れたときに、コンパイラは私の傘ヘッダファイルをコンパイルすることです:
私は、コンパイラ/ Xcodeのヘッダを見ることがどうすればよいですファイル?
Objective-CとSwiftソースファイルが混在したフレームワークを構築しています。
module.modulemapという独自のモジュールマップファイルを作成しました。フレームワークmodule.modulemapの傘のヘッダをコンパイラに表示させるにはどうすればよいですか?
私の問題は、私は絶対パスに入れたときに、コンパイラは私の傘ヘッダファイルをコンパイルすることです:
私は、コンパイラ/ Xcodeのヘッダを見ることがどうすればよいですファイル?
私はこの問題を発見しました。 (またはその1つ)。傘のヘッダーを使用できるようにするには、ヘッダーは実際のヘッダーファイルである必要があります。このケースでは、私はちょうど.mファイルを持っていたプロジェクトで唯一のヘッダーファイルを使用していました。 FYI
#ifndef UmbrellaHeader_h
#define UmbrellaHeader_h
#include "TestObject.h"
#endif /* UmbrellaHeader_h */
:
私のソリューションは、以下の内容で、実際のUmbrellaHeader.hファイルを作成することでしたあなたのプロジェクトがソースをコンパイルする前にそのヘッダ相を持っている場合、あなたが混在Objective-を作成しようC/Swiftフレームワークでは、傘のヘッダーが見つからないというSwiftコンパイラーのエラーが表示されます。すべての.swiftファイルを削除/名前を変更すると、プロジェクトは正常にビルドされますが、2回目にビルドされますが、クリーンビルドに失敗します。
ビルドプロセスでヘッダーフェーズを早期に移動するだけで動作します。
ターゲットメンバシップでTestObject.hファイルを "Project"ではなく "Public"とマークしましたか?まだ完了していない場合に役立つかどうかを試してみてください。 –
はい、TestObject.hはパブリックとしてマークされています。 – Jbryson
私は参照してください。ビルド設定の下にある迅速な検索パスはどうですか?また、module.modulemapファイルが必要な特別な理由もありますか?同じフレームワークプロジェクト内でSwift/Objective-C&Cの相互運用性を実現するには、傘のヘッダーファイルと正しいビルド設定が必要です(詳細はhttps://developer.apple.com/libraryを参照してください)。 /options/Suft/Conceptual/BuildingCocoaApps/MixandMatch.html「Objective-CをSwiftにインポートする」と「Objective-CにSwiftをインポートする」のセクションを参照) –