Xcode 4 - Ausgabeverzeichnis erstellen


217

Ich habe Probleme beim Einrichten / Auffinden meiner Ausgabedateien in Xcode4 (Beta 5). Sie sind irgendwo in platziert ~/Library/Developer/ugly_path/.... Ich kann bei meinen Produkten nicht einmal "Im Finder anzeigen" auswählen. Dies gilt auch für ein einfaches C-Projekt, ein Foundation-Tool und sogar ein Kakao-Bundle. Ein Debugging funktioniert einwandfrei.

Könnten Sie mich bitte darauf hinweisen, wo und wie Ausgabeverzeichnisse eingerichtet / erstellt werden? (Ich weiß, es klingt dumm, ich habe monatelang in Xcode3 codiert, aber ich kann es in Xcode4 Beta nicht herausfinden).

Vielen Dank.

Antworten:


342

Klicken Sie oben im Xcode-Menü auf Einstellungen, wählen Sie die Registerkarte Speicherorte aus und sehen Sie sich die Option Speicherort an.

Sie haben 2 Möglichkeiten:

  1. Platzieren Sie Build-Produkte an einem abgeleiteten Datenort (empfohlen).
  2. Platzieren Sie Build-Produkte an Orten, die durch Ziele festgelegt wurden

Update: Unter xcode 4.6.2 müssen Sie auf die erweiterte Schaltfläche rechts unter dem abgeleiteten Datentextfeld klicken. Standort erstellen, Vermächtnis auswählen.


27
Diese Antwort erklärt, warum diese Änderung vorgenommen wurde: stackoverflow.com/questions/5331270/…
toofah

3
Stolzes Mitglied, was meinst du damit, dass diese nicht in Xcode 5 enthalten sind? Sie befinden sich in den Einstellungen -> Speicherorte -> Abgeleitete Daten -> Erweitert.
Richard Venable

Ok, mein Build .../XCode/DerivedData/wird einfach in den Ordner verschoben. Nur dass die Unterordner zu sein scheinen AppName-asdflkjqwergoobledygook. Da ich aus einem Skript baue , möchte ich den Build tatsächlich finden (damit ich ihn verpacken und über TestFlight senden kann :) Wie bestimme ich, welches der vielen MyAppName-xxxx-s das richtige ist? Vielen Dank!
Olie

@Olie Sie können auch den abgeleiteten Datenort in einen Pfad Ihrer Wahl ändern
Gerard

@Gerard: Ich könnte, aber das ist nicht was ich tun möchte. Ich checke Quellen aus einem Repo aus und erstelle dann über die Befehlszeile. Ich möchte wissen, wohin der Build gegangen ist. Es wäre für mein Build-Skript unangemessen, das Projekt in irgendeiner Weise zu ändern (z. B. durch Ändern der Projekteinstellungen).
Olie

140

Wenn Sie über die Befehlszeile erstellen, können Sie das Ausgabeverzeichnis folgendermaßen festlegen:

xcodebuild -workspace 'WORKSPACE_NAME.xcworkspace' \
           -scheme 'SCHEME_NAME' \
           -configuration 'Release' \
           -sdk iphoneos7.0 CONFIGURATION_BUILD_DIR='OUTPUT_DIRECTORY'

Damit meine sh-Skripte funktionieren, musste ich einfache Anführungszeichen entfernen und nur CONFIGURATION_BUILD_DIR = / Users / ... schreiben
Stanislav Pankevich

@occulus, Sie haben absolut Recht, da dies das Erstellen des Testziels nach dem Erstellen des Projekts fehlschlägt. Ich denke, wenn Sie es nur erstellen, könnte es in Ordnung sein, aber verwenden Sie besser absolute Pfade!
Mostafa Berg

Für den Fall, dass jemand anderes versucht, ein ähnliches Problem zu lösen, habe ich XCode 6.x davon überzeugt, die verknüpfte Binärdatei mit dieser Kombination genau dort zu platzieren , wo sie benötigt wurde:/Users/moi/src/mozbuilds/xul3604/$(CONFIGURATION)/dist/bin
J Evans

29

In Xcode 5: Xcode Menü> Einstellungen ... item> Standorte Registerkarte> Standorte Unterregister> Erweitert ... Taste> Benutzerdefinierte Option.

Wählen Sie dann z. B. Relativ zum Arbeitsbereich .


8
Mögen Sie hundert Jahre alt, stark und gesund sein, Sir. Danke !
WhozCraig

13

Wenn Sie die Einstellung für den Xcode 4-Build-Speicherort auf "Build-Produkte am abgeleiteten Datenspeicherort platzieren (empfohlen)" festgelegt haben, sollte sie sich in ~ / Library / Developer / Xcode / DerivedData befinden. In diesem Verzeichnis befindet sich Ihr Projekt als Verzeichnis Der Projektname wird mit einer Reihe generierter Buchstaben versehen. Schauen Sie also genau hin.


10

Behalten Sie abgeleitete Daten bei, verwenden Sie jedoch DSTROOT, um das Ziel anzugeben.

Verwenden Sie DEPLOYMENT_LOCATION, um die Bereitstellung zu erzwingen.

Verwenden Sie den undokumentierten DWARF_DSYM_FOLDER_PATH, um auch den dSYM zu kopieren.

Auf diese Weise können Sie den von xcodebuild abgeleiteten Datenspeicherort verwenden und müssen keine verrückten Dinge tun, um die App zu finden.

xcodebuild -sdk "iphoneos" -workspace Foo.xcworkspace -scheme Foo -configuration "Debug" DEPLOYMENT_LOCATION=YES DSTROOT=tmp DWARF_DSYM_FOLDER_PATH=tmp build

8

Sie können das Build-Verzeichnis jederzeit finden, indem Sie im Build-Protokoll-Viewer nachsehen und den Pfad dort in ein Terminalfenster kopieren.

Ich verwende dies, um meine iOS .app-Bundles zu analysieren, bevor sie installiert werden, um sicherzustellen, dass keine Streudateien enthalten sind.


So bequem Apple. Nicht!
Zaph

1
Und wo finde ich dieses Build-Protokoll? Wenn Sie in der Xcode-Hilfe nach "Build Log" suchen, werden 0 Ergebnisse zurückgegeben.
Devios1

1
Nm, habe den "Log Navigator" gefunden, der wie eine Sprechblase aussieht.
Devios1

4

Führen Sie für alle Benutzer, die das Build-Verzeichnis in einem Skript suchen, aber nicht ändern möchten, die folgenden Schritte aus, um eine Liste aller Build-Einstellungen zu erhalten, die auf einen Ordner in DerivedData verweisen:

xcodebuild -showBuildSettings | grep DerivedData

Wenn Sie benutzerdefinierte Ziele und Schemata ausführen, fügen Sie diese bitte ebenfalls dort ein:

xcodebuild -workspace "Foo.xcworkspace" -scheme "Bar" -sdk iphonesimulator -configuration Debug -showBuildSettings | grep DerivedData

Sehen Sie sich die Ausgabe an, um die gewünschte Einstellungsausgabe zu finden, und dann:

xcodebuild -showBuildSettings | grep SYMROOT | cut -d "=" -f 2 - | sed 's/^ *//'

Der letzte Teil schneidet die Zeichenfolge am Gleichheitszeichen und schneidet dann am Anfang das Leerzeichen ab.


2

Wenn Sie die neuen Xcode4-Arbeitsbereiche verwenden, können Sie den Speicherort für abgeleitete Daten unter Datei -> Arbeitsbereichseinstellungen ändern ...


1

Sie können das Ausgabeverzeichnis mithilfe der CONFIGURATION_BUILD_DIRUmgebungsvariablen konfigurieren .

Quelle: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Reference/XcodeBuildSettingRef/0-Introduction/introduction.html#//apple_ref/doc/uid/TP40003931-CH1-SW1


Nein, das hat nichts mit dem abgeleiteten Standort- / Legacy-Standortverhalten (pro Ziel) zu
tun

Ja, so ist es. Es funktioniert so oder so. Aus der Dokumentation: "Verzeichnispfad. Gibt das Verzeichnis an, in dem alle Build-bezogenen Dateien für die aktive Build-Konfiguration abgelegt werden."
Heath Borders

Nee. Nicht bei xcode4 hängt es von der Xcode > Preferences > Locations > Derived dataEinstellung ab, wie in der am häufigsten gewählten Antwort erläutert. + Das Dokument, auf das Sie sich beziehen, wurde zuletzt im Jahr 2010 aktualisiert
Gregory Pakosz

Ich habe diese Einstellung tatsächlich verwendet, um das Build-Verzeichnis mit xcode4 von xcodebuild zu konfigurieren. Versuche es.
Heath Borders

1
Nun, ich habe es mit Xcode 4.3.1 (aus der IDE) versucht und ohne die globale Einstellung zu ändern, werden Produkte irgendwo in ~/Library/Developer/Xcode/DerivedData/und nicht in dem Verzeichnis erstellt, mit dem ich angegeben habe CONFIGURATION_BUILD_DIR. Wenn ich geehrt werden möchte CONFIGURATION_BUILD_DIR, muss ich die von Xcode abgeleiteten Dateneinstellungen auf "Legacy"
ändern

0

Bevor Sie mit den Xcode-Einstellungen spielen, sollten Sie Folgendes überprüfen:

Wählen Sie Ihr Ziel aus und gehen Sie zu Build-Einstellungen> Verpackung> Wrapper-Erweiterung

Der Wert dort sollte sein: App

Wenn nicht, doppelklicken Sie darauf und geben Sie "app" ohne die qoutes ein.


-1

Das war so nervig. Öffnen Sie Ihr Projekt, klicken Sie auf Ziel, Registerkarte Build-Phasen öffnen. Überprüfen Sie Ihre Copy Bundle-Ressourcen auf rote Elemente.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.