Xcode 4 - crea directory di output


217

Ho problemi con l'impostazione / l'individuazione dei miei file di output in Xcode4 (beta 5). Sono collocati da qualche parte dentro ~/Library/Developer/ugly_path/.... Non riesco nemmeno a selezionare "show in finder" sui miei prodotti. È lo stesso per un semplice progetto C, lo strumento Foundation e persino il bundle Cocoa. Un debug funziona bene.

Potresti indicarmi dove e come impostare / creare directory di output? (So ​​che sembra stupido, sto scrivendo codice in Xcode3 da mesi, ma non riesco a capirlo in Xcode4 beta).

Molte grazie.

Risposte:


342

Dal menu Xcode in alto, fai clic su Preferenze, seleziona la scheda Posizioni, guarda l'opzione di ubicazione della build.

Hai 2 opzioni:

  1. Posizionare i prodotti di build nella posizione dei dati derivati ​​(consigliato)
  2. Posizionare i prodotti di costruzione nelle posizioni specificate dagli obiettivi

Aggiornamento: su xcode 4.6.2 è necessario fare clic sul pulsante avanzato sul lato destro sotto il campo di testo dei dati derivati. Build Location seleziona legacy.


27
Questa risposta spiega il motivo per cui questo cambiamento è stato fatto: stackoverflow.com/questions/5331270/...
toofah

3
Membro orgoglioso, cosa vuoi dire con questi non presenti in Xcode 5? Sono in Preferenze -> Posizioni -> Dati derivati ​​-> Avanzate.
Richard Venable,

Ok, quindi la mia build va nella .../XCode/DerivedData/cartella, abbastanza semplice. Solo che le sottocartelle sembrano esserlo AppName-asdflkjqwergoobledygook. Dal momento che sto compilando da uno script, mi piacerebbe davvero trovare la build (così posso comprimerla e inviarla tramite TestFlight :) Come posso determinare quale delle molte MyAppName-xxxx-s è quella giusta? Grazie!
Olie,

@Olie Puoi anche cambiare la posizione dei dati derivati ​​in un percorso a tua scelta
Gerard,

@ Gerard: potrei, ma non è quello che voglio fare. Sto verificando le fonti da un repository, quindi costruendo tramite riga di comando e voglio sapere dove è andata la build. Sarebbe inopportuno che il mio build-script modifichi il progetto in qualsiasi modo (diciamo, cambiando le impostazioni del progetto.)
Olie

140

Se si crea dalla riga di comando, è possibile impostare la directory di output nel modo seguente:

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

Per far funzionare i miei script sh avevo bisogno di rimuovere virgolette singole e scrivere solo CONFIGURATION_BUILD_DIR = / Users / ...
Stanislav Pankevich

@occulus, hai assolutamente ragione in quanto questo non riuscirà a costruire l'obiettivo di test dopo aver costruito il progetto, penso che se lo stai costruendo POTREBBE andare bene, ma è meglio usare percorsi assoluti!
Mostafa Berg,

Nel caso in cui qualcun altro stia cercando di risolvere un problema simile, ho convinto XCode 6.x a posizionare il binario collegato esattamente dove era necessario usando questa combinazione:/Users/moi/src/mozbuilds/xul3604/$(CONFIGURATION)/dist/bin
J Evans

29

In Xcode 5: Xcode Menu> Preferences ... item> Locali scheda> Locali sub-scheda> Avanzate ... > pulsante personalizzato opzione.

Quindi scegliere, ad esempio, Relativo allo spazio di lavoro .


8
Possa tu vivere per avere cento anni, forte e sano signore. Grazie !
WhozCraig,

13

Se hai impostato Xcode 4 Build Location su "Posiziona i prodotti build nella posizione dei dati derivati ​​(consigliato), dovrebbe trovarsi in ~ / Library / Developer / Xcode / DerivedData. Questa directory includerà il tuo progetto come directory, il il nome del progetto verrà aggiunto con un gruppo di lettere generate, quindi guarda attentamente.


10

Conservare i dati derivati ​​ma utilizzare DSTROOT per specificare la destinazione.

Utilizzare DEPLOYMENT_LOCATION per forzare la distribuzione.

Utilizzare DWARF_DSYM_FOLDER_PATH non documentato per copiare anche il dSYM.

Ciò ti consente di utilizzare la posizione dei dati derivati ​​da xcodebuild e di non dover fare cose bizzarre per trovare l'app.

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

8

Puoi sempre trovare la directory di compilazione guardando nel visualizzatore del registro di build e copiando il percorso in una finestra del terminale.

Lo uso per analizzare i miei bundle .app iOS prima che vengano installati per assicurarsi che non vengano inclusi file randagi.


Apple così comoda. Non!
zaph,

1
E dove trovo questo registro di build ?? La ricerca di "registro build" nella guida di Xcode restituisce 0 risultati.
devios1

1
Nm, ha trovato il "Log Navigator", che sembra un fumetto.
devios1

4

Per chiunque desideri trovare la directory di build da uno script ma non desidera modificarla, eseguire quanto segue per ottenere un elenco di tutte le impostazioni di build che puntano a una cartella in DerivedData:

xcodebuild -showBuildSettings | grep DerivedData

Se esegui obiettivi e schemi personalizzati, inseriscili anche qui:

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

Guarda l'output per individuare l'output delle impostazioni che desideri e quindi:

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

L'ultima parte taglia la stringa allo stesso segno e quindi taglia lo spazio all'inizio.


2

Se usi le nuove aree di lavoro Xcode4, puoi modificare la posizione dei dati derivati in File -> Impostazioni dell'area di lavoro ...


1

È possibile configurare la directory di output utilizzando la CONFIGURATION_BUILD_DIRvariabile di ambiente.

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


no non correlato al comportamento della posizione derivata / legacy (per destinazione)
Gregory Pakosz

Sì. Funziona in entrambi i modi. Dalla documentazione: "Percorso della directory. Identifica la directory in cui vengono inseriti tutti i file relativi alla build per la configurazione della build attiva."
Heath Borders,

no. non con xcode4 dipende Xcode > Preferences > Locations > Derived datadall'impostazione come spiegato nella risposta più votata. + il documento a cui ti riferisci è stato aggiornato l'ultima volta nel 2010
Gregory Pakosz il

In realtà ho usato questa impostazione per configurare la directory di build con xcode4 da xcodebuild. Provaci.
Heath Borders,

1
bene, ho provato con Xcode 4.3.1 (dall'IDE) e senza cambiare l'impostazione globale, i prodotti vengono creati da qualche parte all'interno ~/Library/Developer/Xcode/DerivedData/e non all'interno della directory specificata CONFIGURATION_BUILD_DIR. Se voglio CONFIGURATION_BUILD_DIRessere onorato, devo cambiare le preferenze dei dati derivati ​​da Xcode su "Legacy"
Gregory Pakosz,

0

Un'altra cosa da controllare prima di iniziare a giocare con le preferenze di Xcode è:

Seleziona il tuo obiettivo e vai su Impostazioni build> Imballaggio> Estensione wrapper

Il valore dovrebbe essere: app

In caso contrario, fai doppio clic su di esso e digita "app" senza le qoutes.


-1

Questo è stato così fastidioso. Apri il tuo progetto, fai clic su Target, apri la scheda Fasi di costruzione. Controlla le risorse del pacchetto copia per eventuali elementi rossi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.