2009-12-14 12 views
7

Ich habe ein ziemlich komplexes (iPhone SDK) Xcode-Projekt mit vielen Zielen - 4 statische Bibliotheken, Komponententests, mehrere Beispiel-Apps, ein BuildAll, das ein Shell-Skript ausführt Paket, das ein anderes Shell-Skript ausführt. Das Ziel "BuildAll" erstellt ein Verzeichnis im Projekt mit einigen Unterverzeichnissen mit Inhalten, die für die Verteilung bereit sind.Skript während Clean/Clean All in Xcode ausführen

Wenn ich auf "Alles bereinigen" klicke, weiß Xcode jedoch nicht, dass es mein Distributionsverzeichnis bereinigt. Ich würde es gerne haben. Ich kann keinen Weg finden, dies zu tun - weiß jemand wie?


Es fühlt sich an wie Clean and Clean All sollte wirklich nur Ziele in Xcode, und ich soll eine "Run Script" Phase hinzufügen kann. Nicht so, nach meinem Wissen.

Übrigens kümmert sich das "BuildAll" -Ziel um die Säuberung des Distributionsverzeichnisses, das ist also nicht das Ende der Welt für mich. Es ist einfach ärgerlich, dass "Clean All" in meinem speziellen Fall nicht wirklich sauber macht.

Antwort

0

können Sie versuchen, Hinzufügen> Neues Ziel ...> Shell Script Ziel durch Steuerklick auf einem Targets Knoten in den Gruppen & Dateien.

Dann, nach einem Doppelklick auf ein Skript ausführen Knoten Sie Setup jede Bereinigung-Szenario $ ACTION Variable, die kann Werte sauber, installieren usw.

Und schließlich neu erstellt Shell-Skriptziel sollte dem Hauptziel als Abhängigkeit hinzugefügt werden.

+1

Unterscheidet sich das "Shell Script Target" von einem leeren Ziel mit einer "Shell Script Build Phase"? Ich habe Build-Phasen zu meinen App-Zielen hinzugefügt und die Umgebungsvariable $ ACTION überprüft, aber es scheint, als würde Xcode das Skript überhaupt nicht auf clean ausführen. – benzado

+2

Ja, es sieht so aus, als hätten Targets und Build-Phasen unterschiedliche Workflows, wenn Xcode-Projekte erstellt werden. – Stream

+1

Es funktioniert überhaupt nicht mit "Shell Script Target". Sie benötigen ein "Externes Ziel", wie der folgende Link sagt: http://log.yeahrightkeller.com/post/270155578/run-script-while-cleaning-in-xcode – moala

2

Sie können ein "Externes Ziel" hinzufügen, das die Bereinigung in einem externen Skript durchführt, und dieses Ziel als eine Abhängigkeit von einem Ihrer statischen Bibliotheksziele hinzufügen. Erstellen Sie das Ziel und ziehen Sie es unter eines Ihrer statischen Bibliotheksziele. Überprüfen Sie die Aktion mithilfe der Umgebungsvariablen $ ACTION im Skript.

+0

Ist das immer noch aktuell? Ich kann keine "External Target" -Option mit Xcode 6 –

+1

fehlende Informationen finden ... Was ist das $ ACTION env var? Erzählst du dir, in welcher Build-Phase du gerade liegst? Ich wusste nicht, dass beim Reinigen irgendwelche Build-Phasen laufen ... –