5 Stimmen

Wie kann ich Header aus meinen benutzerdefinierten Frameworks entfernen?

Ich habe eine Mac Cocoa-Anwendung, die mehrere benutzerdefinierte Frameworks verwendet. (Apple nennt sie privat, es handelt sich um die Frameworks, die im App-Bundle mit Ihrer Anwendung verteilt werden.) Innerhalb jedes Frameworks befindet sich ein Headers-Ordner mit den Headerdateien des Frameworks. Diese werden nicht im resultierenden Anwendungsbundle benötigt und ich möchte sie privat halten. Derzeit verwende ich eine Run-Skript-Build-Phase mit folgender Zeile:

# Entfernen Sie alle Header aus unseren privaten Frameworks
find "${TARGET_BUILD_DIR}" -name Headers -print0 | xargs -0 rm -rf

Ist das der richtige Weg, oder gibt es einen besseren?


Weitere Informationen zu meiner Projektstruktur: Ich habe drei Xcode-Projekte in meinem Hauptprojekt verschachtelt, diese Projekte haben meine privaten Frameworks als ihre Produkte. Die Frameworks sind als Zielabhängigkeit für mein Hauptziel eingerichtet. Und der letzte Teil des Setups ist eine Build-Phase zum Kopieren von Dateien, die die Frameworks nehmen und sie in einen Unterordner Frameworks innerhalb des Anwendungsbundles kopieren. (Hoffentlich ist das klar genug.)

2voto

justin Punkte 103032

Sie haben wahrscheinlich bereits einen Kopierschritt für Header in Ihrem Framework. Sie können:

1) entfernen Sie es,

2) geben Sie die Sichtbarkeit der Header im IDE einzeln an,

3) oder fügen Sie sie dem Kopierschritt für Header hinzu/entfernen Sie sie daraus.

Ich habe meine Ziele einfach als Build-Abhängigkeiten eingerichtet, mit:

  • benutzerdefinierten Suchpfaden für Header
  • einem Kopierschritt für den Framework
  • kein Kopierschritt für Header

Sie können es anders machen (z.B. nur das Framework explizit kompilieren oder einige Header exportieren).

Wenn Sie (letztendlich) keine zufriedenstellende Antwort erhalten, können weitere Details über die Struktur Ihrer Projekte hilfreich sein, da es verschiedene Möglichkeiten gibt, dies zu konfigurieren.

Viel Glück

0 Stimmen

Vielen Dank! Ich habe eine Phase "Dateien kopieren", die ganze Frameworks kopiert. Ist es möglich, nur das Framework ohne Header zu kopieren? (Ich werde mehr Informationen über mein Projektsetup zur Frage hinzufügen.)

0 Stimmen

Hi zoul - ich kopiere einfach keine Header in das Framework-Bundle (beim Erstellen des Framework-Ziels) und füge das Header-Verzeichnis des Frameworks zu den Suchpfaden für die Ziele hinzu, die sie benötigen (unter Verwendung von HEADER_SEARCH_PATHS). Für die meisten privaten/internen Bibliotheken, die ich schreibe, finde ich Header einfach durch Verwendung eines einzigen Quellbaums (um komplexe/unübersichtliche HEADER_SEARCH_PATHS-Definitionen zu umgehen) und deklariere dann Einschlüsse relativ zum Quellbaum. In diesem Fall können Sie immer noch #include schreiben, vorausgesetzt, dass das Verzeichnis MONFramework ein Verzeichnis im Quellbaum ist. (Fortsetzung)

0 Stimmen

Dann ist MONFramework/MONFramework.h dafür verantwortlich, alle seine öffentlichen/exportierten Header relativ zum Quellbaum einzuschließen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X