Mas para mim não está resolvido, eu enfrento esse problema mesmo quando uso o Xcode 8.2. Você pode experimentá-lo (faça o download do Xcode8.2 beta2 aqui )
Sistema de Compilação • O Xcode não reconstruirá um destino inteiro quando ocorrerem apenas pequenas alterações. (28892475)
Resposta antiga:
Esta é uma solução alternativa:
Guia "Build Setting" -> "C Language Dialect" -> Altere para "Compiler Default".
O "C Language Dialect" foi definido como "GNU99" em vez de "Compiler Default". Anteriormente, o padrão era GNU99, mas agora não é. Em algum momento, o Xcode não migrou as configurações do projeto da biblioteca corretamente e, portanto, foi definido como GNU99. Depois que mudei para GNU99, ele parou de recompilar todo o meu código todas as vezes!
Por enquanto, tudo bem!!! Dê-me uma hora e a recompensa é sua, se continuar.
Adam Waite
7
Argh está de volta a recompilar tudo #
Adam Waite
1
Eu tenho o mesmo comportamento. Se eu limpar os dados derivados (ou alterar o dialeto do idioma C), eles funcionarão por cerca de 10 compilações. Depois disso, ele volta a reconstruir tudo.
bluebamboo
1
O Xcode 8.2 (beta 2) funciona para 10 compilações e depois reconstrói tudo do zero, mas ainda melhor que o anterior.
Markus
3
Infelizmente, o problema persiste no Xcode 8.3 beta 2 (pelo menos para nós). Nenhuma melhoria notável pode ser medida em nosso projeto.
Kasper Munck
20
Vá para Produto -> Esquema -> Editar esquema. Selecione Criar na coluna do lado esquerdo e desmarque " Localizar dependências implícitas "
Mas esse sinalizador deve permanecer marcado quando você estiver criando o projeto pela primeira vez.
@ Josh, você está usando vários projetos dentro do seu projeto (por exemplo, subprojeto ou incluído). E você tem certeza, olhando para o resultado da sua compilação, que está realmente reconstruindo tudo?
Mobile Ben
3
É um espaço de trabalho básico com cocoapods e o projeto principal. O CocoaPods permanece construído, mas o projeto principal reconstrói todos os arquivos; assistindo a saída da compilação e sua definitivamente mais de 100 arquivos reconstruídos.
Josh
1
Atualização: parece que esta solução funciona para algumas compilações depois de fazer isso, no entanto, o mesmo ocorre com a limpeza de todo o projeto e a reconstrução. Pela 2-8ª vez, no entanto, a reconstrução começa a recompilar tudo novamente. Alguma ideia? Além de frustrante.
Josh
Isso não funciona, pelo menos não com um espaço de trabalho do CocoaPods. Tudo constrói, sempre. Super irritante, especialmente desde que a Apple teve anos para corrigir esse problema.
Womble
7
A correção para mim era apenas fechar o storyboard, eu tinha o arquivo de origem aberto com o editor assistido e o arquivo do storyboard também (fechar o storyboard - já que eu não estava fazendo nenhuma alteração) removi toda a compilação desnecessária
A maior melhoria que consegui fazer foi modularizar meu projeto. Modularizando especificamente a camada ORM, usada em quase todas as outras classes. Ao mover esse código para um destino separado dentro do meu projeto e importá-lo como um módulo, fui capaz de melhorar bastante os tempos de compilação. O Xcode não decide mais recompilar arquivos desnecessários quando eu faço uma compilação.
Agora eu uso o método de compilação de arquivo único para compilações de depuração incremental rápidas.
Ainda tem sido um problema constante para mim com o Xcode 9. Como muitos de vocês, estou trabalhando em um grande projeto rápido 4 / cocoapods com muitos arquivos de origem e recompilando cada arquivo sempre que é irritante.
Até agora, estou obtendo os melhores resultados com as seguintes configurações. Eu sugiro que você experimente e veja como funciona para você.
Alterei algumas coisas com o meu código em relação ao cabeçalho do prefixo que parece ter corrigido esse problema. Não sei qual deles realmente fez o truque, mas vou compartilhá-los todos na esperança de que ajude alguém por aí. Se você não tiver um cabeçalho de prefixo definido, acho que esse não é o problema (ou o problema é multifacetado).
Remova todas as importações do cabeçalho do prefixo que são arquivos do diretório de produtos criados para poder alterar a configuração de compilação para isso ("Cabeçalho pré-compilado usa arquivos do diretório de compilação") para "Não". Certifique-se de que não seja importado indiretamente também por meio de outras importações.
Remova todas as importações do cabeçalho do prefixo que usam os módulos Clang (bibliotecas ou estruturas que possuem um arquivo module.modulemap em seu diretório Headers, para que você possa escrever códigos como @import MyModule). (Para mim, este e o passo 1 eram o mesmo.)
Defina a configuração de compilação para o compartilhamento de cabeçalho de prefixo como "Sim". (Acho que isso não é necessário e não deve ter nenhum efeito no meu próprio projeto. Estou apenas afirmando isso porque mudei porque estava disposto a tentar qualquer coisa. :))
Saia do Xcode e exclua o diretório DerivedData / ModuleCache (configurado para estar em ~ / Library / Developer, se bem me lembro).
Se isso ainda não funcionar, tente remover mais algumas importações do cabeçalho do prefixo. Pode haver algo que tropeça ...
Também adicionei esse valor, o tempo de compilação é mais rápido, mas não resolveu a compilação incremental. Eu mudei o Swift Compiler - Geração de código / Debug para Rápida, Whole Módulo Otimização ... é o melhor resultado até agora
Antonio Júnior
eu não posso mesmo encontrar Definido pelo usuário)
David Procure
2
@DavidSeek está na parte inferior das configurações de compilação
Confira todo o seu código de @IBDesignablediretrizes no meu caso particular, o Xcode build project o tempo todo, porque eu tinha algumas visualizações no meu storyboard que continham esses @IBDesignableatributos. A segunda coisa é que eu também tenho o meu storyboard aberto em uma janela separada (não na guia) que é empurrada pelo meu Xcode para criar compilações para todos os simuladores para sempre.
Usamos várias @IBDesignablediretivas ... há algo em particular que devemos procurar?
Stan
Eu acho que é possível encontrá-los excluindo um por um e verificar o resultado; no meu caso, foram apenas duas das diretivas @IBDesignable em todo o projeto.
Ua24
2
Madhuri Mane está totalmente certa sobre isso. Para adicionar um pouco mais de clareza, alguns pontos importantes a serem observados:
Isso é APENAS aplicável se você tiver dependências implícitas de bibliotecas / estruturas nas quais seu destino depende.
Se "Localizar dependências implícitas" estiver desativado:
Resultado: a biblioteca não será criada antes da criação do destino do aplicativo. O destino do aplicativo falha ao criar.
Correção: para garantir que o segundo cenário não aconteça, você deve adicionar os destinos necessários à lista de destinos e ordená-los corretamente.
Agora, se todo o seu projeto estiver alojado dentro de um destino e levar 4 minutos para compilar, não há muito o que fazer sobre isso, exceto dividi-lo em estruturas para tirar proveito do exposto acima ou descobrir onde a compilação fica atrasada. Se você estiver usando algo como o PaintCode ou tiver grandes partes do código do UIKit rapidamente, altere-o para Objective-c, ele será compilado muito mais rapidamente
Por favor, vá para a configuração de construção do projeto e altere o "C Language Dialect".
O "C Language Dialect" é definido como "GNU99" em vez de "Compiler Default" quando você atualiza a versão do xcode. Em algum momento, o Xcode não migrou as configurações do projeto da biblioteca corretamente e, portanto, foi definido como GNU99. Isto resolverá o problema
Se você tiver feito alterações no arquivo Swift, comece a criar o aplicativo, vá para a última guia e clique no log de compilação, durante o estágio "Verificar dependências", pare a compilação e execute-a novamente. Na segunda execução, ele deve criar apenas os arquivos que você modificou. Se feito corretamente, achei que funciona sempre. Não há necessidade de fazer alterações nas configurações do projeto.
Parece ser um bug no Xcode.
Se você vir o aplicativo fazendo uma compilação completa, pare a compilação e tente esse truque novamente.
Se você não fez alterações no código, use CMD + CTRL + R para executar sem criar o aplicativo que anexa o depurador. Não cria aplicativo, mas pode ajudar a economizar tempo desnecessário.
Isso realmente funciona, mas às vezes o XCode falhará com o código 1 e você precisará fazer uma compilação limpa. É um pesadelo
Antonio Junior
Existem outros cenários em que o Xcode sempre faz a compilação completa. Descobri que se você modificar o arquivo .h incluído no cabeçalho da ponte, ele reconstruirá todos os arquivos Swift. Pode haver outros cenários não relacionados ao bug do Xcode.
Vlad
Existem cenários em que a única alteração é uma renomeação de função ou uma nova propriedade adicionada a uma classe / estrutura existente que resulta em uma reconstrução inteira.
Tente: 1. Navegue para o projeto 2. Clique em Configurações de compilação 3. Verifique se OptimizationLevel está definido como Nenhum para depuração. 4. Clique em Adicionar configuração definida pelo usuário. 5. Defina SWIFT_WHOLE_MODULE_OPTIMIZATION como YES.
nada para trabalhar ainda compila quando escrevo uma única carta.
30518 Chandni
-2
para garantir o tempo de compilação do xcode, pode usar o IRAMDISK (disco de memória virtual). Meios muito úteis e eficazes para reduzir o tempo de compilação.
Também pode ser usado para acelerar aplicativos usados com frequência.
Respostas:
Atualização 2017/1/2
Este problema não foi resolvido no Xcode 8.2.1 (para o meu projeto)
Como sobreviver?
Atualização 17/12/2016
Este problema não foi resolvido no Xcode 8.2.
Atualização 12/12/2016
Atom para codificar e linha de comando para criar e depurar é a minha escolha agora. Espero que a Apple corrija esse bug legítimo em breve.
Atualização 2016/12/04
Este problema parece resolvido com o Xcode 8.2 (beta 2) .
Mas para mim não está resolvido, eu enfrento esse problema mesmo quando uso o Xcode 8.2. Você pode experimentá-lo (faça o download do Xcode8.2 beta2 aqui )
Resposta antiga: Esta é uma solução alternativa:
Guia "Build Setting" -> "C Language Dialect" -> Altere para "Compiler Default".
Para referência :
fonte
Vá para Produto -> Esquema -> Editar esquema. Selecione Criar na coluna do lado esquerdo e desmarque " Localizar dependências implícitas "
Mas esse sinalizador deve permanecer marcado quando você estiver criando o projeto pela primeira vez.
fonte
A correção para mim era apenas fechar o storyboard, eu tinha o arquivo de origem aberto com o editor assistido e o arquivo do storyboard também (fechar o storyboard - já que eu não estava fazendo nenhuma alteração) removi toda a compilação desnecessária
fonte
ATUALIZADA
A maior melhoria que consegui fazer foi modularizar meu projeto. Modularizando especificamente a camada ORM, usada em quase todas as outras classes. Ao mover esse código para um destino separado dentro do meu projeto e importá-lo como um módulo, fui capaz de melhorar bastante os tempos de compilação. O Xcode não decide mais recompilar arquivos desnecessários quando eu faço uma compilação.
Agora eu uso o método de compilação de arquivo único para compilações de depuração incremental rápidas.
Existem outras boas sugestões neste link, incluindo refatoração de código, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5
VELHO
Ainda tem sido um problema constante para mim com o Xcode 9. Como muitos de vocês, estou trabalhando em um grande projeto rápido 4 / cocoapods com muitos arquivos de origem e recompilando cada arquivo sempre que é irritante.
Até agora, estou obtendo os melhores resultados com as seguintes configurações. Eu sugiro que você experimente e veja como funciona para você.
Adicionadas configurações de compilação definidas pelo usuário,
Nota: Não tenho a configuração personalizada definida pelo usuário para a otimização do módulo inteiro.
fonte
Alterei algumas coisas com o meu código em relação ao cabeçalho do prefixo que parece ter corrigido esse problema. Não sei qual deles realmente fez o truque, mas vou compartilhá-los todos na esperança de que ajude alguém por aí. Se você não tiver um cabeçalho de prefixo definido, acho que esse não é o problema (ou o problema é multifacetado).
@import MyModule
). (Para mim, este e o passo 1 eram o mesmo.)Se isso ainda não funcionar, tente remover mais algumas importações do cabeçalho do prefixo. Pode haver algo que tropeça ...
fonte
Parece que eles estão trabalhando ativamente nele de acordo com https://forums.developer.apple.com/thread/62737, mas uma solução alternativa é adicionar
HEADERMAP_USES_VFS = YES
nas configurações de compilação do seu destino (Projeto -> Destino -> Configurações de compilação -> Definido pelo usuário).
Hoje, essa solução funcionou todas as vezes para mim hoje, depois que nenhuma outra solução funcionou de forma consistente no mês passado.
EDIT: Às vezes ainda recompilar tudo, embora pareça fazê-lo com muito menos frequência com essa configuração definida.
fonte
Confira todo o seu código de
@IBDesignable
diretrizes no meu caso particular, o Xcode build project o tempo todo, porque eu tinha algumas visualizações no meu storyboard que continham esses@IBDesignable
atributos. A segunda coisa é que eu também tenho o meu storyboard aberto em uma janela separada (não na guia) que é empurrada pelo meu Xcode para criar compilações para todos os simuladores para sempre.fonte
@IBDesignable
diretivas ... há algo em particular que devemos procurar?Madhuri Mane está totalmente certa sobre isso. Para adicionar um pouco mais de clareza, alguns pontos importantes a serem observados:
Isso é APENAS aplicável se você tiver dependências implícitas de bibliotecas / estruturas nas quais seu destino depende.
Se "Localizar dependências implícitas" estiver desativado:
Fonte e leituras adicionais sobre o tópico: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action
Agora, se todo o seu projeto estiver alojado dentro de um destino e levar 4 minutos para compilar, não há muito o que fazer sobre isso, exceto dividi-lo em estruturas para tirar proveito do exposto acima ou descobrir onde a compilação fica atrasada. Se você estiver usando algo como o PaintCode ou tiver grandes partes do código do UIKit rapidamente, altere-o para Objective-c, ele será compilado muito mais rapidamente
fonte
Vá para as configurações de compilação do seu destino e defina
Defines Module
comoYes
.Trabalhou para mim em algumas versões, muito cedo para afirmar que essa é uma solução definitiva, mas pelo menos estamos tentando.
fonte
Apple lançou nova versão beta do Xcode ontem (14 de novembro)
Xcode 8.2 beta 2
E esse problema foi marcado como resolvido na nota de lançamento.
Está funcionando para mim. A velocidade de construção voltou como de costume. Todo mundo que está enfrentando esse problema deve experimentá-lo!
https://developer.apple.com/download/
fonte
Por favor, vá para a configuração de construção do projeto e altere o "C Language Dialect".
O "C Language Dialect" é definido como "GNU99" em vez de "Compiler Default" quando você atualiza a versão do xcode. Em algum momento, o Xcode não migrou as configurações do projeto da biblioteca corretamente e, portanto, foi definido como GNU99. Isto resolverá o problema
fonte
Se você tiver feito alterações no arquivo Swift, comece a criar o aplicativo, vá para a última guia e clique no log de compilação, durante o estágio "Verificar dependências", pare a compilação e execute-a novamente. Na segunda execução, ele deve criar apenas os arquivos que você modificou. Se feito corretamente, achei que funciona sempre. Não há necessidade de fazer alterações nas configurações do projeto.
Parece ser um bug no Xcode.
Se você vir o aplicativo fazendo uma compilação completa, pare a compilação e tente esse truque novamente.
Se você não fez alterações no código, use CMD + CTRL + R para executar sem criar o aplicativo que anexa o depurador. Não cria aplicativo, mas pode ajudar a economizar tempo desnecessário.
fonte
Foi corrigido um problema do meu lado aplicando a desmarcação na solução "Localizar dependências implícitas".
MAS lembre-se, se você estiver usando cocoapods, aplique essas configurações também ao seu projeto de pod selecionando-o
Produto -> Esquema -> Pods - "yourProjectName"
também se aplica em:
Produto -> Esquema -> "yourProjectName"
Isso me ajuda, então espero que essa dica ajude outra pessoa.
obrigado
fonte
Tente: 1. Navegue para o projeto 2. Clique em Configurações de compilação 3. Verifique se OptimizationLevel está definido como Nenhum para depuração. 4. Clique em Adicionar configuração definida pelo usuário. 5. Defina SWIFT_WHOLE_MODULE_OPTIMIZATION como YES.
fonte
para garantir o tempo de compilação do xcode, pode usar o IRAMDISK (disco de memória virtual). Meios muito úteis e eficazes para reduzir o tempo de compilação.
Também pode ser usado para acelerar aplicativos usados com frequência.
consulte o link a seguir para baixar e usar: http://iramdisk.findmysoft.com/mac/
fonte