Statische Bibliothek öffentliche-Header nicht kopiert Build/Ordner Produkte
Ich habe 2 Projekte, das erstellen einer statischen Bibliothek wird jeden, wie auch ein anderes Projekt verwendet sowohl statische Bibliotheken.
Einem der beiden statischen Bibliotheken baut gut. Die andere nicht und der Grund dafür ist, dass seiner öffentlichen Header nicht kopiert den Ordner vor der benutzerdefinierten shell-script ausgeführt wird.
Hier ist eine demonstration dessen, was passiert:
SampleA (die funktioniert)
Compile MyClass1.cpp ...
Compile MyClass2.cpp ...
Libtool /Users/user/Library/Developer/XCode/DerivedData/.....
Libtool /Users/user/Library/Developer/XCode/DerivedData/.....
Libtool /Users/user/Library/Developer/XCode/DerivedData/.....
Create universal binary libSampleA.a ...
Copy SampleA.h ...in /Users/user/....
Copy MyClass1.h ...in /Users/user/....
Copy MyClass2.h ...in /Users/user/....
Run custom shell script 'Prepare Framework'
Stripping libSampleA.a
--- Build complete
SampleB (die, die NICHT arbeiten)
Compile OtherClass1.cpp ...
Compile OtherClass2.cpp ...
Libtool /Users/user/Library/Developer/XCode/DerivedData/.....
Libtool /Users/user/Library/Developer/XCode/DerivedData/.....
Libtool /Users/user/Library/Developer/XCode/DerivedData/.....
Create universal binary libSampleB.a ...
//>>>>> NO HEADER FILES ARE COPIED <<<<<<
Run custom shell script 'Prepare Framework'
--- Build fails (header folder does not exist)
Mein Aktuelles setup ist ein Arbeitsbereich, der alle 3 Projekte, aber ich habe 1 Projekt mit einem verschachtelten Projekt für jede statische Bibliothek als gut. Habe ich ein Problem bleibt das gleiche in beiden setups.
Mehr info
- Ich habe versucht, praktisch jede Anleitung, Tipp und Rat, den ich online gefunden für diese Arbeit.
- Die Einstellungen an beiden Projekten, soweit ich das beurteilen kann, identisch sind. Der Vergleich der beiden Projekt-Dateien war nicht sehr effektiv. Ich habe auch noch nicht im Vergleich alle Einstellungen der beiden Projekte eins nach dem anderen, um sicherzustellen, dass Sie die gleichen (noch) nicht.
- Das problem ist das gleiche in beiden Debug und Archiv baut (ich weiß, dass die Archivierung verhält sich anders)
- Ich habe
"$(BUILD_ROOT)/../IntermediateBuildFilesPath/UninstalledProducts/include"
- und/oder"$(PROJECT_TEMP_DIR)/../UninstalledProducts/include"
- Ich habe die Header zu den "Build-Phasen > Kopieren von Header > Öffentliche" Abschnitt - hat nicht funktioniert
- Die ich gelöscht habe "Build-Phasen" > "Copy Headers" phase vollständig, wie Apple empfehlen und fügte hinzu, die Header zu den Kopieren von Dateien phase - hat nicht funktioniert
- Ich habe eine neue Gruppe in der statischen lib-Projekt und fügte hinzu, alle Ihre Header, Einstellung, kein Ziel zu "Add to Targets" - hat nicht funktioniert
- Ich habe XCode beenden und wieder versucht, oder sogar den mac neu starten - hat nicht funktioniert
Ein Unterschied zwischen den beiden Bibliotheken ist, dass SampleB (die, die nicht bauen) enthält verschiedene Header von SampleA. Es gibt keine compiler-oder linker-Fehler, nur der Fehler am Ende der build, den ich beschreiben.
Quellen
Einige der Quellen habe ich verwendet für die Erstellung der Bibliothek als auch für den Versuch, das Problem zu lösen:
- https://developer.apple.com/library/ios/technotes/iOSStaticLibraries/Articles/creating.html
- Xcode 4 kann nicht finden die öffentlichen header-Dateien, statische Bibliothek Abhängigkeit
- Compile -, Build-oder Archiv-Probleme mit Xcode 4 (und Abhängigkeiten)
- http://www.blog.montgomerie.net/easy-xcode-static-library-subprojects-and-submodules
So, weißt du, was löst den Header kopiert oder nicht kopiert, während das bauen?
Ich würde vermuten, dass, selbst wenn eine header-Datei wird Hinzugefügt, um die Kopie Header phase oder das Kopieren von Dateien phase, zumindest diese sollten kopiert werden. Aber wie es sich herausstellt, ist dies nicht das, was passiert ist, zumindest in meinem Fall.
- Der einzige link, den Sie Folgen sollten, ist die offizielle von Apple. Die weiteren Empfehlungen aus den anderen links sind entweder veraltet oder falsch sind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgenden Apple den Anweisungen, und erstellen Sie eine Cocoa-Touch static library-Projekt aus der Vorlage:
Sicherzustellen, dass Sie Ihren custom "Skript Ausführen" - phase nach das "Dateien Kopieren" - phase:
Dann, wenn Gebäude, das Transkript wird Aussehen wie diese:
In meinem setup habe ich ein übergeordnetes Projekt mit einem verschachtelten Projekt, das strahlt eine statische Bibliothek.
Versuchte ich mit einem Header phase, konnte ich nicht, Xcode zu kopieren Sie die überschriften in der richtigen Stelle, wenn die Archivierung. Plus die Header und die statische Bibliothek kopiert wurden, in das Archiv, das Sie nicht wollen. So landete ich mit einem Kopieren von Dateien phase und Einstellung Überspringen Installieren JA beim zeigen der Header Search Paths in tha übergeordneten Projekt zu BUILT_PRODUCTS_DIR.