2016-05-13 12 views
1

Ich baue ein Framework mit gemischten Objective-C und Swift Quelldateien.
Ich habe meine eigene Modul-Map-Datei namens module.modulemap erstellt.Wie bekomme ich den Compiler, um meine Framework-Modul.Modulemap Regenschirm Header zu sehen?

Mein Problem ist, dass der Compiler nur Datei my umbrella Header kompiliert, wenn ich in den absoluten Pfad setzen:

Not working!

Working, Yeah!

Wie erhalte ich die Compiler/Xcode den Header zu sehen Datei?

+0

Haben Sie versucht, Ihre TestObject.h-Datei in der Zielmitgliedschaft als "Öffentlich" anstelle von "Projekt" zu markieren? Versuchen Sie zu sehen, ob es hilft, falls noch nicht geschehen. –

+0

Ja, TestObject.h ist als öffentlich markiert. – Jbryson

+1

Ich verstehe. Was ist mit schnellen Suchpfaden unter Build-Einstellungen? Und gibt es einen bestimmten Grund, warum Sie sogar module.modulemap-Datei benötigen? Um die Interoperabilität von Swift/Objective-C & C innerhalb desselben Framework-Projekts zu verdeutlichen, benötigen Sie nur eine Umbrella-Header-Datei und korrekte Build-Einstellungen (weitere Informationen finden Sie hier: https://developer.apple.com/library) /ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html unter "Importieren von Objective-C in Swift" und "Importieren von Swift in Objective-C" –

Antwort

0

Ok, also habe ich das Problem gefunden. (Oder einer von ihnen). Es scheint, dass, um einen Umbrella-Header verwenden zu können, der Header eine tatsächliche Header-Datei sein muss. In diesem Fall habe ich nur die einzige Header-Datei im Projekt verwendet, die auch eine .m-Datei hatte.

war meine Lösung eine tatsächliche UmbrellaHeader.h Datei mit folgendem Inhalt zu erstellen:

#ifndef UmbrellaHeader_h 
#define UmbrellaHeader_h 

#include "TestObject.h" 

#endif /* UmbrellaHeader_h */ 
0

FYI: Wenn Ihr Projekt seine Headers Phase vor Compile Sources und Sie versuchen, eine gemischte objektiv-erstellen Im C/Swift-Framework können Swift-Compiler-Fehler in Bezug auf den Regenschirm-Header angezeigt werden. Wenn Sie alle .swift-Dateien entfernen/umbenennen, wird das Projekt ordnungsgemäß erstellt. Wenn Sie sie zurücklegen, wird das Build ein zweites Mal erstellt, aber ein sauberes Build schlägt fehl.

Verschieben Sie einfach die Header-Phase früher im Build-Prozess und es sollte funktionieren.