2009-08-19 6 views
5

Kurze Frage: Wie nehmen Sie zwei Anwendungen, eine für Intel und die andere ppc, und packen sie in einem Universal Binary?Erstelle ein "Universal Binary" aus zwei Apps?

Meine aktuellen Gedanken zu diesem Problem:

ich obwohl der Apple Developer-Dokumentation auf Universal Binaries gelesen haben und nicht in der Lage gewesen, eine Antwort zu finden, so dass es nicht möglich sein kann.

Aus Gründen, auf die ich hier nicht eingehen werde, habe ich zwei Apps meines Programms (etwa mit xtools, um die Binärdatei einmal universell zu kompilieren), eine für Intel Macs und die andere für Mac> = 10.3.9 läuft PPK. Ressourcen zu teilen ist kein Problem.

Ich könnte sowohl MyProg_intel.app als auch MyProg_ppc.app in eine Zip-Datei schreiben und auf diese Weise verteilen; aber das kann für viele Leute, die ich mein Programm verteilen werde, Verwirrung stiften.

Antwort

1

Um ein Universal Binary zu erstellen, müssen Sie Xcode verwenden und sowohl Intel- als auch PPC-Zielarchitekturen auswählen. Soweit ich weiß, können Sie nicht einfach zwei verschiedene Binärdateien in eine .app-Datei schreiben.

3

Schauen Sie sich die Manpage für Lipo an. Ich glaube, dass Sie -create verwenden können, um mehrere Eingabedateien zu erstellen und eine einzelne Ausgabedatei mit mehreren Architekturen zu erstellen.

5

Siehe das Tool lipo. Damit können Sie Ihre PPC- und i386-Binärdateien zusammenfügen.

Auch manchmal separate Ziele für verschiedene Architekturen können vermieden werden, indem Sie conditional build settings in Xcode verwenden. Dies ist nützlich, wenn Sie zum Beispiel eine Verbindung zu einer anderen Binärbibliothek für jede Architektur herstellen müssen.

+0

lipo sieht so aus, als könnte es meine lösung sein, aber die eingabedatei erwartet eine binäre oder eine andere art von datei - nicht eine .app (wenn ich es versuche, sagt _Keine eingabedatei ((os/kern) ungültiges argument) _). Mein Programm ist mit Python erstellt und meine Packaging-Methode kompiliert nicht alles in eine Binärdatei, es gibt eine große Anzahl von Abhängigkeiten. – marshallpenguin

+1

Sie verwenden lipo, um nur die Binärdateien zusammenzuführen: lipo myapp_ppc.app/Contents/MacOS/myapp-output myapp_i386.app/Contents/MacOS/myapp fügt die PPC-Seite in die Intel App ein, die Sie dann als Universal-App umbenennen können. Aber die anderen Plakate sind richtiger. Sie sollten die App an erster Stelle nach dem Erstellen und Verknüpfen jeder Architektur erstellen, anstatt zweimal die .app-Datei zu erstellen und sie wegzuwerfen. – cdespinosa

+0

py2app erzeugt bereits eine universelle Binärdatei. Warum bauen Sie Ihre Abhängigkeiten nicht mit "-arch i386 -arch ppc" in CFLAGS, CXXFLAGS und LDFLAGS auf? –

1

Die Entwicklerwebsite von Apple enthält einen Artikel unter Building an Open Source Universal Binary, in dem erläutert wird, wie mit Xcode ein Universal Binary mithilfe von Buildskripts "verpackt" werden kann. Dies ist wahrscheinlich der beste Weg zur Vernunft. Sie könnten lipo verwenden, aber auf lange Sicht, wenn Sie Ihre Anwendung aktualisieren und pflegen, wird ein Xcode-Projekt, das die Magie für Sie tut, viel weniger Zeit in Anspruch nehmen.

Verwandte Themen