Xcode 4 - construir directorio de salida

217

Tengo problemas con la configuración / localización de mis archivos de salida en Xcode4 (beta 5). Se colocan en algún lugar ~/Library/Developer/ugly_path/.... Ni siquiera puedo seleccionar "mostrar en el buscador" en mis productos. Es lo mismo para un proyecto C simple, una herramienta Foundation e incluso un paquete de Cocoa. Una depuración funciona bien.

¿Podría indicarme dónde y cómo configurar / crear directorios de salida? (Sé que suena tonto, he estado codificando en Xcode3 durante meses, pero no puedo entenderlo en Xcode4 beta).

Muchas gracias.

kubbing
fuente

Respuestas:

342

Desde el menú Xcode en la parte superior, haga clic en preferencias, seleccione la pestaña de ubicaciones, mire la opción de ubicación de compilación.

Tienes 2 opciones:

  1. Coloque los productos de compilación en la ubicación de datos derivados (recomendado)
  2. Coloque productos de compilación en ubicaciones especificadas por objetivos

Actualización: en xcode 4.6.2 debe hacer clic en el botón avanzado en el lado derecho debajo del campo de texto de datos derivados. Ubicación de construcción seleccione legado.

el reverendo
fuente
27
Esta respuesta explica por qué se realizó este cambio: stackoverflow.com/questions/5331270/…
toofah
3
Miembro orgulloso, ¿qué quiere decir que no están en Xcode 5? Están en Preferencias -> Ubicaciones -> Datos derivados -> Avanzado.
Richard Venable
Ok, entonces mi compilación va a la .../XCode/DerivedData/carpeta, lo suficientemente simple. Excepto que las subcarpetas parecen ser AppName-asdflkjqwergoobledygook. Como estoy construyendo a partir de un script, me gustaría encontrar la compilación (para poder empaquetarla y enviarla a través de TestFlight :) ¿Cómo determino cuál de los muchos MyAppName-xxxx-s es el correcto? ¡Gracias!
Olie
@Olie También puede cambiar la ubicación de los datos derivados a una ruta de su elección
Gerard
@Gerard: Podría, pero eso no es lo que quiero hacer. Estoy revisando las fuentes de un repositorio, luego construyendo a través de la línea de comandos, y quiero saber a dónde se fue la compilación. Sería inapropiado para mi script de compilación modificar el proyecto de alguna manera (por ejemplo, cambiando la configuración del proyecto).
Olie
140

Si crea desde la línea de comandos, puede establecer el directorio de salida de la siguiente manera:

xcodebuild -workspace 'WORKSPACE_NAME.xcworkspace' \
           -scheme 'SCHEME_NAME' \
           -configuration 'Release' \
           -sdk iphoneos7.0 CONFIGURATION_BUILD_DIR='OUTPUT_DIRECTORY'
Igor
fuente
Para que mis scripts sh funcionaran, necesitaba eliminar las comillas simples y escribir solo CONFIGURATION_BUILD_DIR = / Users / ...
Stanislav Pankevich
@occulus, tienes toda la razón, ya que esto fallará al construir el objetivo de prueba después de construir el proyecto, creo que si solo lo estás construyendo, PUEDE estar bien, ¡pero es mejor usar rutas absolutas!
Mostafa Berg
En caso de que alguien más esté tratando de resolver un problema similar, convencí a XCode 6.x de colocar el binario vinculado exactamente donde se necesitaba usando esta combinación:/Users/moi/src/mozbuilds/xul3604/$(CONFIGURATION)/dist/bin
J Evans
29

En Xcode 5: Xcode menú> Preferencias ... item> Ubicaciones pestaña> Ubicaciones pestaña secundaria> Avanzado ... botón> personalizada opción.

Luego elija, por ejemplo, Relativo al espacio de trabajo .

Grumdrig
fuente
8
Que viva hasta los cien años, señor fuerte y saludable. Gracias !
WhozCraig
13

Si tiene la configuración Xcode 4 Build Location establecida en "Colocar productos de compilación en la ubicación de datos derivados (recomendado), debe ubicarse en ~ / Library / Developer / Xcode / DerivedData. Este directorio tendrá su proyecto allí como un directorio, el El nombre del proyecto se agregará con un montón de letras generadas, así que mire con cuidado.

bxiong
fuente
10

Mantenga los datos derivados pero use DSTROOT para especificar el destino.

Use DEPLOYMENT_LOCATION para forzar la implementación.

Use el DWARF_DSYM_FOLDER_PATH no documentado para copiar el dSYM también.

Esto le permite usar la ubicación de datos derivados de xcodebuild y no tener que hacer cosas extrañas para encontrar la aplicación.

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

Siempre puede encontrar el directorio de compilación buscando en el visor de registro de compilación y copiando la ruta allí en una ventana de terminal.

Lo uso para analizar mis paquetes .app de iOS antes de instalarlos para asegurarme de que no se incluyan archivos extraviados.

radven
fuente
Muy conveniente Apple. ¡No!
zaph
1
¿Y dónde encuentro este registro de compilación? La búsqueda de "registro de compilación" en la ayuda de Xcode devuelve 0 resultados.
devios1
1
Nm, encontré el "Log Navigator", que parece una burbuja de diálogo.
devios1
4

Para cualquiera que quiera encontrar el directorio de compilación desde un script pero no quiera cambiarlo, ejecute lo siguiente para obtener una lista de todas las configuraciones de compilación que apuntan a una carpeta en DerivedData:

xcodebuild -showBuildSettings | grep DerivedData

Si ejecuta objetivos y esquemas personalizados, colóquelos allí también:

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

Mire la salida para localizar la salida de configuración que desea y luego:

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

La última parte corta la cadena en el signo igual y luego recorta el espacio en blanco al principio.

Berend Klein Haneveld
fuente
2

Si utiliza los nuevos espacios de trabajo Xcode4, puede cambiar la ubicación de datos derivados en Archivo -> Configuración del espacio de trabajo ...

DaGaMs
fuente
1

Puede configurar el directorio de salida utilizando la CONFIGURATION_BUILD_DIRvariable de entorno.

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

Heath Borders
fuente
no, eso no está relacionado con el comportamiento de ubicación derivado de ubicación / legado (por objetivo)
Gregory Pakosz
Sí lo es. Funciona de cualquier manera. De la documentación: "Ruta del directorio. Identifica el directorio en el que se ubican todos los archivos relacionados con la compilación para la configuración de compilación activa".
Heath Borders
no no con xcode4, depende de la Xcode > Preferences > Locations > Derived dataconfiguración como se explica en la respuesta más votada. + el documento al que se refiere se actualizó por última vez en 2010
Gregory Pakosz
De hecho, he usado esta configuración para configurar el directorio de compilación con xcode4 de xcodebuild. Darle una oportunidad.
Heath Borders
1
bueno, he intentado con Xcode 4.3.1 (desde el IDE) y sin cambiar la configuración global, los productos se compilan en algún lugar ~/Library/Developer/Xcode/DerivedData/y no dentro del directorio que especifico CONFIGURATION_BUILD_DIR. Si quiero CONFIGURATION_BUILD_DIRser honrado, tengo que cambiar las preferencias de datos derivados de Xcode a "Legacy"
Gregory Pakosz
0

Otra cosa que debe verificar antes de comenzar a jugar con las preferencias de Xcode es:

Seleccione su objetivo y vaya a Configuración de compilación> Empaquetado> Extensión de envoltorio

El valor que debería haber: aplicación

Si no, haga doble clic y escriba "app" sin las qoutes.

Hasan
fuente
-1

Esto fue muy molesto. Abra su proyecto, haga clic en la pestaña Destino, Abrir fases de compilación. Revise los recursos del paquete de copias para ver si hay elementos rojos.

mármol azul
fuente