Xcode 4 - compilação diretório de saída

217

Tenho problemas com a configuração / localização dos meus arquivos de saída no Xcode4 (beta 5). Eles são colocados em algum lugar ~/Library/Developer/ugly_path/.... Não consigo nem selecionar "mostrar no localizador" nos meus produtos. É o mesmo para um projeto C simples, uma ferramenta Foundation e até um pacote de cacau. Uma depuração funciona bem.

Você poderia me indicar onde e como configurar / criar diretórios de saída? (Eu sei que parece idiota, estou codificando no Xcode3 há meses, mas não consigo descobrir isso no Xcode4 beta).

Muito obrigado.

kubbing
fonte

Respostas:

342

No menu Xcode na parte superior, clique em preferências, selecione a guia locais, veja a opção de localização da construção.

Você tem 2 opções:

  1. Coloque os produtos de compilação no local de dados derivados (recomendado)
  2. Coloque produtos de construção em locais especificados por destinos

Atualização: No xcode 4.6.2, você precisa clicar no botão avançado no lado direito abaixo do campo de texto dos dados derivados. Localização da Construção, selecione legado.

o reverendo
fonte
27
Esta resposta explica por que essa alteração foi feita: stackoverflow.com/questions/5331270/…
toofah
3
Orgulhoso Membro, o que você quer dizer com não está no Xcode 5? Eles estão em Preferências -> Locais -> Dados Derivados -> Avançado.
Richard Venable
Ok, então minha compilação entra na .../XCode/DerivedData/pasta, bastante simples. Exceto que as subpastas parecem ser AppName-asdflkjqwergoobledygook. Como estou construindo a partir de um script, gostaria realmente de encontrar a compilação (para que eu possa empacotá-la e enviá-la via TestFlight :) Como determinar qual dos muitos MyAppName-xxxx-s é o correto? Obrigado!
Olie #
@Olie Você também pode alterar a localização dos dados derivados para um caminho de sua escolha
Gerard
@ Gerard: Eu poderia, mas não é isso que eu quero fazer. Estou verificando fontes de um repositório, construindo via linha de comando e quero saber para onde foi a compilação. Seria inapropriado para o meu script de construção modificar o projeto de qualquer forma (digamos, alterando as configurações do projeto).
Olie
140

Se você criar a partir da linha de comandos, poderá definir o diretório de saída da seguinte maneira:

xcodebuild -workspace 'WORKSPACE_NAME.xcworkspace' \
           -scheme 'SCHEME_NAME' \
           -configuration 'Release' \
           -sdk iphoneos7.0 CONFIGURATION_BUILD_DIR='OUTPUT_DIRECTORY'
Igor
fonte
Para fazer com que meus scripts sh Trabalho I necessária para remover as aspas simples e escrever apenas CONFIGURATION_BUILD_DIR = / Users / ...
Stanislav Pankevich
@ occulus, você está absolutamente certo, pois isso falhará na construção do alvo de teste após a construção do projeto, acho que se você estiver apenas construindo, PODE estar bem, mas é melhor usar caminhos absolutos!
Mostafa Berg
No caso de alguém está tentando resolver um problema semelhante convenci XCode 6.x para colocar o binário ligada exatamente onde era necessário usar esta combinação:/Users/moi/src/mozbuilds/xul3604/$(CONFIGURATION)/dist/bin
J Evans
29

No Xcode 5: Xcode Menu> Preferências ... item> Locais tab> Locais sub-tab> Avançado ... botão> Personalizado opção.

Em seguida, escolha, por exemplo, Relativo ao espaço de trabalho .

Grumdrig
fonte
8
Que você possa viver até os cem anos de idade, forte e saudável, senhor. Obrigado !
WhozCraig
13

Se você tiver a configuração Local de compilação do Xcode 4 definida como "Colocar produtos de compilação no local de dados derivados (recomendado), ela deverá estar localizada em ~ / Library / Developer / Xcode / DerivedData. Esse diretório terá seu projeto como um diretório, o diretório O nome do projeto será anexado com um monte de letras geradas, portanto, observe com atenção.

bxiong
fonte
10

Mantenha os dados derivados, mas use o DSTROOT para especificar o destino.

Use DEPLOYMENT_LOCATION para forçar a implantação.

Use o DWARF_DSYM_FOLDER_PATH não documentado para copiar também o dSYM.

Isso permite que você use o local de dados derivados do xcodebuild e não precise fazer coisas malucas para encontrar o aplicativo.

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

Você sempre pode encontrar o diretório de construção procurando no visualizador de log de construção e copiando o caminho para uma janela do terminal.

Eu uso isso para analisar meus pacotes .app do iOS antes de serem instalados para garantir que nenhum arquivo perdido esteja sendo incluído.

Radven
fonte
Apple tão conveniente. Não!
Zaph 26/09/11
1
E onde encontro esse log de compilação? A busca por "build log" na ajuda do Xcode retorna 0 resultados.
devios1
1
Nm, encontrei o "Log Navigator", que parece um balão de fala.
devios1
4

Para quem deseja encontrar o diretório de construção de um script, mas não deseja alterá-lo, execute o seguinte para obter uma lista de todas as configurações de construção que apontam para uma pasta no DerivedData:

xcodebuild -showBuildSettings | grep DerivedData

Se você executar metas e esquemas personalizados, coloque-os também:

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

Observe a saída para localizar a saída de configuração desejada e, em seguida:

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

A última parte corta a corda no sinal de igual e apara o espaço em branco no início.

Berend Klein Haneveld
fonte
2

Se você usar os novos espaços de trabalho do Xcode4, poderá alterar o Local dos dados derivados em Arquivo -> Configurações do espaço de trabalho ...

DaGaMs
fonte
1

Você pode configurar o diretório de saída usando a CONFIGURATION_BUILD_DIRvariável de ambiente

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

Heath Borders
fonte
não que não está relacionado com a localização derivada / legado (por alvo) comportamento localização
Gregory Pakosz
Sim, ele é. Funciona de qualquer maneira. Na documentação: "Caminho do diretório. Identifica o diretório em que todos os arquivos relacionados à compilação da configuração de compilação ativa são colocados."
Heath Borders
Não. não no xcode4, depende da Xcode > Preferences > Locations > Derived dataconfiguração conforme explicado na resposta mais votada. + o documento ao qual você está se referindo foi atualizado pela última vez em 2010 #
Gregory Pakosz 13/03/12
Na verdade, usei essa configuração para configurar o diretório de compilação com o xcode4 do xcodebuild. De uma chance.
Heath Borders
1
bem, eu tentei com o Xcode 4.3.1 (a partir do IDE) e sem alterar a configuração global, os produtos são criados em algum lugar dentro ~/Library/Developer/Xcode/DerivedData/e não dentro do diretório que eu especifico CONFIGURATION_BUILD_DIR. Se eu quero CONFIGURATION_BUILD_DIRser honrado, tenho que mudar as preferências de dados derivadas do Xcode para "Legacy"
Gregory Pakosz
0

Outra coisa a verificar antes de começar a jogar com as preferências do Xcode é:

Selecione seu destino e vá para Configurações de Compilação> Empacotamento> Extensão do Wrapper

O valor que deve haver: app

Caso contrário, clique duas vezes e digite "app" sem as qoutes.

hasan
fonte
-1

Isso foi tão chato. Abra seu projeto, clique na guia Destino, Abrir fases da compilação. Verifique se há itens vermelhos nos Recursos do pacote de cópias.

mármore azul
fonte