2012-03-27 5 views
6

Ich erstelle eine Bibliothek, und obwohl es einwandfrei funktioniert, indem ich all meinen Code packe und alle Header - Dateien in einen Ordner lege und dann den Ordner und die statische Bibliothek ziehe, kann ich den Zweck der Abschnitt "Header kopieren" unter Build-Phasen.iPhone - Statische Bibliotheken, Zweck von "Copy Headers"?

Ich habe alle diese Links lesen:

Using open source static libraries

Creating static libraries for iOS

How to create universal static libraries

Stackoverflow: copy headers: public vs private vs project

Aber ich sehe noch nicht den Punkt der Kopie Header Einstellung I erkennen Sie, dass Sie den privaten und öffentlichen Pfad unter Build setzen können settings> packaging und dass die Header-Dateien nach dem Build in diesen Ordner verschoben werden. Aber was ist der Punkt in diesem? Ist dies anders als nicht eine einzige Kopie Header-Datei zu setzen, und einfach greifen die .a-Datei greifen alle meine Header-Dateien und lege sie in einen Ordner ?. Auch, was ist der Zweck der Kopiere Projektkopfzeilen ?, da sie überhaupt nicht im Ziel enthalten sind ?.

Antwort

1

Das Hinzufügen der Kopfzeilen zum Abschnitt "Public" der Phase "Copy Headers" entspricht meines Wissens dem Kopieren in den Freigabeordner.

Ich benutze es als Erleichterung, als ich die Bibliothek Verpackungsprozess mit einem Lauf-Skript (dank this StackOverflow question, die Sie lesen sollten, wenn Sie Universalbibliotheken zur Verfügung stellen möchten) automatisieren.

Auf diese Weise Ich brauche nur meine neue öffentlichen Header an den „Public“ der „Copy Headers“ Phase hinzufügen zu haben, sie in meinem Release Ordner mit diesem Teil des Skripts automatisch bereitgestellt:

######### 
# 
# Added: StackOverflow suggestion to also copy "include" files 
# (untested, but should work OK) 
# 
if [ -d "${CURRENTCONFIG_DEVICE_DIR}/usr/local/include" ] 
then 
mkdir -p "${CREATING_UNIVERSAL_DIR}/headers" 
# * needs to be outside the double quotes? 
cp "${CURRENTCONFIG_DEVICE_DIR}/usr/local/include/"* "${CREATING_UNIVERSAL_DIR}/headers" 
fi 

Ich habe auch bemerkt, dass diese Header in das Paket bei der Archivierung (Produkt -> Archiv) kopiert werden, so ist es vielleicht ein erster Schritt von Apple, eine saubere Möglichkeit zum Erstellen statischer Bibliotheken zu bieten.

Hoffnung hilft diese

1

Ist die Kopier Headers Phase Arbeit jetzt, wenn ein Archiv produzieren? Die Dokumentation von Apple schlägt vor, dass die Funktion nicht funktioniert, und sie schlugen stattdessen vor, eine Build-Phase zum Kopieren von Dateien zu verwenden. Wurde dies in den letzten Versionen von Xcode behoben? https://developer.apple.com/library/ios/#technotes/iOSStaticLibraries/Articles/creating.html

+0

Anscheinend ist das Problem immer noch hier auf Xcode 6.2 – duhanebel

Verwandte Themen