different minds about different platforms

a blog of Dirk Eisenberg (>)

  Home  |   Contact  |   Syndication    |   Login
  47 Posts | 4 Stories | 7 Comments | 17 Trackbacks

News

Ich hoffe das jeder Besucher in diesem Blog das ein oder andere interessante Thema findet. Als Autor der Beiträge freue ich mich besonders über Feedback in Form von Kommentaren oder auch persönlicher als E-Mail. Dankbar nehme ich Anregungen und Korrekturen von fehlerhaften Inhalten entgegen.

Article Categories

Archives

Post Categories

Image Galleries

Blogs

Links

auch auf einem Apple Mac nutzt man in der Regel dynamische Bibliotheken um komplexer werdende Software in verschiedene Module aufzuteilen. Wie auch unter Linux ist das aber so ein Sache wenn es dann um die Verteilung des gesamten Produkts geht. Die von Windows bekannte Side-by-Side-Execution greift leider nicht und somit such der Library-Loader eben nicht im  lokalen Verzeichnis nach der Datei. Also was tun. Apple hat zu diesem Zweck dsa Konzept der Bundles. Bundles sind eigentlich nur festgesetzte Verzeichnisstrukturen, die sowieso hinter jeder Applikation die mit XCode erzeugt wird, stehen. In diese Struktur wird die Library an eine bestimmte Stelle gelegt und der Build-Prozess angepasst. Hierzu sind folgende Schritte nötig:

1. Library-Settings so anpassen das beim Linken immer relativ vom Verzeichnis des Executables referenziert wird.



Hierfür legt man in den Project-Settings des XCode-Projektes den Install-Path der Library wie folgt fest: @executable_path/../Frameworks/yourlib.dylib.

2. Einfühurng eines Custom-Build-Steps beim Erzeugen der eigentlichen Software einführen um die benötigten Libraries zu kopieren.



Hierfür nehmen wir die Croos-Referenz auf das Library-Projekt aus dem letzen Beitrag wieder her und ziehen die sich darin befindliche .dylib auf den eben erzeugte Custom-Build-Step (sieh Abbildung).

Wird nun das Hauptprojekt erzeugt, entsteht immer ein Applikations-Bundle was via Drag-n-Drop vom Benutzer installiert werden kann ohne das aufwändig Setupskripte Libraries an andere Stellen kopieren müssen. Das ganze ist dann nun nur noch hübsch in ein Disk-Image zu verpacken und fertig für den Rollout.
posted on Thursday, February 07, 2008 12:03 AM