Como corrigir erro de PCH?

132

Quando tento criar meu aplicativo Xcode, recebo esta mensagem de erro:

Arquivo PCH criado a partir de uma ramificação diferente ((clang-425.0.24)) que o compilador ((clang-425.0.27))

Isso não aconteceu antes, mas essa foi a primeira compilação após a atualização do Xcode.

Outros aplicativos funcionam, mas não esse específico.

Se eu desativar a "Precompile Prefix Header"configuração, ela funcionará.

Como faço para corrigir esse erro e ainda manter essa configuração ativada?

Macro206
fonte

Respostas:

246

Isso geralmente é um problema de armazenamento em cache. Geralmente, isso pode ser resolvido mantendo a tecla Opção pressionada e escolhendo Produto> Limpar pasta de compilação ...

gaige
fonte
3
Isso não corrigiu o erro para mim. Também estou executando uma limpeza completa e excluindo os dados derivados.
Ben S
6
Funcionou para mim, exceto que estava em Product> Cleane não havia necessidade da chave de comando. (Xcode 4.6.1)
Steve Haley ''
1
@SteveHaley Existe Product > Clean, mas faz um trabalho menos completo. Algumas pessoas podem comprar Product > Clean, pois a maioria Product > Clean Build Folder...é suficiente e outras precisam da remoção manual, conforme indicado na resposta do @Sedes abaixo.
quer
7
Conheço sua pergunta antiga, mas a correção mencionada acima não me ajudou. Apenas excluir Dados Derivados e criar o projeto novamente funciona bem.
Ankit Jain 5/05
2
você pode simplesmente fazer rm -rf / ios / build?
SuperUberDuper
47

Exclua a DerivedDatapasta do projeto. Olhe em Preferências do Xcode -> Locais para ver onde você o salvou.

wcochran
fonte
É importante notar que DerivedDatanão é necessariamente onde está sua Buildpasta, isso me ajudou muito, obrigado!
Nit
1
excluir moduleCachedentro DerivedDatatambém
whtlnv 16/01/19
Você deve primeiro tentar "limpar", como as outras respostas dizem. Quando isso não funciona, eu simplesmente exclui recursivamente a DerivedDatapasta inteira ... "armas nucleares da órbita ... única maneira de ter certeza." @whitelionV isso também seria rm moduleCachee tudo mais lá.
Wcochran
39

Parece que o Produto> Limpar Pasta de Construção ... (com a tecla Opção pressionada) funciona para a maioria das pessoas. Veja a resposta selecionada por @gaige.

Se você é diferente da maioria das pessoas (inclusive eu) e isso ainda causa problemas, o XCode provavelmente deixou seus cabeçalhos pré-compilados compartilhados em outro lugar. Para mim, eles estavam em uma pasta semelhante a esta:

/var/folders/<some random two characters>/<some random string>/C/com.apple.Xcode.502/SharedPrecompiledHeaders

Acabei de excluir toda a pasta SharedPrecompiledHeaders e isso resolveu as coisas para mim. Eu não iria tocar muito mais aqui ...

Sedes
fonte
2
Isso corrigiu esse problema para mim. Para mim, é porque eu tenho uma compilação orientada por linha de comando.
precisa saber é o seguinte
2
Se esse for o seu caso, você poderá encontrar essa pasta na transcrição de compilação do Xcode. Procurei a string "SharedPrecompiledHeaders"
José Manuel Sánchez
6
Sim, esta é a solução certa. Especialmente se você construir a partir da linha de comando ou se tiver um script de construção. O local do cabeçalho pré-compilado pode ser encontrado nas configurações de compilação, "Locais da compilação" -> caminho em cache dos cabeçalhos pré-compilados.
karim
Como você encontra o diretório var?
precisa saber é o seguinte
1
@GoldenJoe Abra o Finder Shift-Cmd-Ge digite/var
Sedes
23

Vá para Xcode Preferences-> Locations (como mencionado na resposta por wcochran) e simplesmente renomeie sua pasta DerivedData. Simplesmente mudei o meu de "DerivedData" para "DerivedData2" e isso forçou o sistema a parar de referenciar o local antigo. Isso foi corrigido para mim quando nenhuma das outras respostas funcionou. Veja a foto:

insira a descrição da imagem aqui

Alyoshak
fonte
15

Nenhuma das outras opções funcionou para mim, eis o que foi corrigido:

Eu apaguei a pasta de cache em /Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/(renomear também funciona).

Tente excluir a pasta mencionada no erro, se o erro for algo parecido com isto:

PCH was compiled with module cache path '/Users/User/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8', but the path is currently '/Users/Stan/Library/Developer/Xcode/DerivedData/ModuleCache/75YIWZVTEAO8

Stan Tatarnykov
fonte
Sim você está certo. Nenhuma das opções acima funciona para mim. Apenas exclua a pasta mencionada e reconstrua, é isso.
Zhang Buzz
Essa é a resposta correta. Limpar / excluir DerivedData não funciona para mim depois de mover o projeto para outro caminho.
Bill Chan
13

A exclusão das pastas Builde DerivedDatada localização do projeto no Finder funcionou para mim.

spfursich
fonte
pode ser a .buildpasta para algumas pessoas (incluindo eu)
Florian Pfisterer
Funciona bem. Veja também stackoverflow.com/questions/33653727/…
Mr-IDE
13

No diretório do projeto ios, vá para criar e excluir a pasta ModuleCache . Execute react-native run-iosnovamente, ele deve funcionar conforme o esperado. Resumo -rm -rf ios/build/ModuleCache

Ritik Rishu
fonte
Sim, também no react-native e build funciona a partir do Xcode, mas não da CLI usando o npm run ios. A remoção do cache, conforme sugerido, resolveu o problema.
dakt 11/11
6

Depois de atualizar o Xcode, eu estava conseguindo isso com vários projetos. Clean Build Folder e Clean não tiveram efeito - o @sedes answer e o comentário de @ josema.vitaminew fizeram isso por mim. Mas pode ser complicado, a menos que você use um pouco de astúcia, então aqui está um atalho passo a passo:

  1. vá para o log de construção que falhou
  2. use o cmd-f "SharedPrecompiledHeaders" para encontrá-lo (ele estará no meio de uma linha de comando complexa e horrível)
  3. arraste e selecione o texto "SharedPrecompiledHeaders" e todos os caracteres ANTES, mas NÃO DEPOIS, até chegar ao início do bit do caminho (ainda no meio do grande bloco de texto), por exemplo, para mim: "/ var / folders / 03 /n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
  4. Abra o Finder
  5. menu: Ir -> Ir para a pasta ...
  6. copie / cole o caminho selecionado
  7. em "SharedPrecompiledHeaders" exclua TODAS as subpastas (isso é seguro: são apenas dados em cache)

... e agora todos os seus projetos serão "Corrigidos", mas terão que ser recriados pela primeira vez com armazenamento em cache zero (para que o NEXT build ONLY seja mais lento que o normal).

Adão
fonte
5

no meu caso, me livrei de todos os arquivos em SharedPrecompiledHeaders dessa maneira e tudo começou a funcionar bem:

sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir sudo find dir -name \* -type f -delete
Hamid Tavakoli
fonte
Isso é algo que eu posso usar facilmente em um script, então eu gosto ... Ainda não descobri nenhum caso ruim [...] #
1616 Matt
5

Eu encontrei esse erro ao tentar criar um projeto com o Swift Package Manager.

A solução é apenas excluir o .builddiretório.

Zigii Wong
fonte
4

Especialmente se você criar a partir da linha de comando ou tiver um script de construção, a limpeza do destino do xcode não será suficiente. Você excluiu esta pasta.

O local do cabeçalho pré-compilado pode ser encontrado no diretório

Target -> build settings => "Build locations" -> Precompiled headers cached path

Exclua esta pasta com,

#rm -fr SharedPrecompiledHeaders

insira a descrição da imagem aqui

karim
fonte
Meu caminho de cache estava na pasta de compilação / build / ModuleCache /. Removê-lo do local antigo não
serviu
3

Se não for resolvido limpando. É um problema de cache de compilação - mantenha pressionada a tecla Opção e navegue para Produto> Limpar pasta de compilação. Isso resolveu o meu problema.

Vardhan
fonte
3

No meu caso, o Xcode estava criando a pasta DerivedData no pacote principal do meu projeto (/ Users / Path_to_your_project_source_code / YourProjectName / DerivedData)

Acabei de excluir esta pasta do meu pacote de código-fonte e agora está funcionando.

Para verificar, vá para Xcode Preferences-> Locations e veja se DerivedData está selecionado como "Relative". Veja a imagem abaixo insira a descrição da imagem aqui

Dilip Saket
fonte
3

Para mim, isso sempre acontecia quando copio meu projeto para outro local. Eu faria isso para colocá-lo em um repositório ou algo assim.

Eu tenho que excluir a pasta Build (rm -rf Build /) nos locais novos e antigos para fazê-lo funcionar. Faz sentido porque a pasta Build terá dados irrelevantes para o novo local.

A limpeza de dados derivados ou a exclusão das pastas sharedPrecompiledHeaders não funcionaram nesse caso.

TheJeff
fonte
2

você deve manter pressionado "shift + command + C" e, em seguida, criará

Peter Zhu
fonte
2

Limpar e / ou excluir dados derivados não funcionou para mim. O que funcionou foi tocar / salvar o arquivo .pch (adicione um caractere e exclua-o) para forçá-lo a ser reconstruído. Isso fez o truque.

Alfie Hanssen
fonte
Isso funcionou para mim. Eu apaguei o diretório SharedPrecompiledHeaders, compilação limpa, pasta compilação limpa, etc etc. Este foi no Xcode 5.1
migs647
Onde está o arquivo PCH?
precisa saber é o seguinte
2

Se fazer uma compilação limpa não funcionar, procure os arquivos PCH /var/folders/../SharedPrecompiledHeaderse remova os arquivos PCH, que funcionaram para mim.

Jonathan Lin
fonte
2
Existe uma resposta idêntica a esta com mais detalhes postados por @sedes. Por favor, tente não postar respostas duplicadas.
michaellindahl
2

Você pode tentar limpar o produto ou a pasta de compilação:

SHIFT+ COMMAND+K

OPTION+ SHIFT+ COMMAND+K

Mateus
fonte
2

Se você estiver executando uma construção de linha de comando xcodebuild, veja se a -derivedDataPath BUILD_DIRopção está sendo usada. Nesse caso, seu diretório ModuleCache.noindex estará no BUILD_DIR em vez do local normal do Xcode. Exclua o diretório ModuleCache.noindex e tudo estará pronto.

Eu me deparei com essa situação porque estou criando um aplicativo React Native, e o cliente iOS normalmente é criado a partir da linha de comando por meio do conjunto de ferramentas React Native.

phatmann
fonte
1

Eu tentei limpar o projeto e limpar a pasta de compilação, que não funcionou.

Depois disso, encerrei o xCode completamente, excluí a pasta de dados derivada em seu local padrão: ~ / Library / Developer / Xcode / DerivedData, iniciei o xCode novamente e desenvolvi o projeto.

Isso parecia ter resolvido o problema para mim.

tcd1980
fonte
Você poderia elaborar um pouco, por favor?
Richard Dally
Fechar o Xcode, rodar rm -rf ~/Library/Developer/Xcode/DerivedDatano Terminal e abrir o Xcode fez isso por mim. Também verifiquei que meus locais (Xcode -> Preferências -> Locais) eram todos padrão.
sman591
1

ATUALIZADA

Isso funcionou perfeitamente para mim:

  • Feche seu projeto ou espaço de trabalho.
  • No Localizador: ⇧shift + ⌘cmd + G
  • Cole: ~ / Biblioteca / Desenvolvedor / Xcode / DerivedData /
  • Exclua a pasta ModuleCache e esvazie a lixeira.
  • Abra seu projeto.
  • Limpo: ⇧shift + ⌘cmd + K
  • Versão: ⌘cmd + B

xCode 7.3.1
referência aqui

Daniel Morandini
fonte
0

Acabei de excluir DerivedDatae funcionou para mim.

KAUSHIK PARMAR
fonte