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?

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 ...


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.


É 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 ...


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


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


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

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


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).


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

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.


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


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.


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


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.


2

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


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.


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.


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


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.


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.


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


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.