Come riparare l'errore PCH?


132

Quando provo a compilare la mia app Xcode, appare questo messaggio di errore:

File PCH creato da un ramo diverso ((clang-425.0.24)) rispetto al compilatore ((clang-425.0.27))

Non è successo prima, ma questa è stata la prima build dopo l'aggiornamento di Xcode.

Altre app funzionano, ma non questa specifica.

Se disattivo l' "Precompile Prefix Header"impostazione, funziona.

Come posso correggere questo errore e continuare a mantenere tale impostazione?

Risposte:


246

Questo è spesso un problema di memorizzazione nella cache. Di solito può essere risolto tenendo premuto il tasto Opzione e selezionando Prodotto> Pulisci cartella di build ...


3
Questo non ha risolto l'errore per me. Ho anche eseguito una pulizia completa ed eliminando i dati derivati.
Ben S

6
Ha funzionato per me, tranne per il fatto che era sotto Product> Cleane non era necessario il tasto comando. (Xcode 4.6.1)
Steve Haley,

1
@SteveHaley C'è un Product > Clean, ma fa un lavoro meno approfondito. Alcune persone possono acquistare con Product > Clean, per la maggior parte Product > Clean Build Folder...è sufficiente, e altri hanno bisogno della rimozione manuale come indicato nella risposta @Sedes di seguito.
gaige,

7
Conosco la sua vecchia domanda, ma la correzione sopra menzionata non mi ha aiutato. Semplicemente cancellando i dati derivati ​​e costruendo di nuovo il progetto funziona bene.
Ankit Jain,

2
puoi semplicemente fare rm -rf / ios / build?
SuperUberDuper

47

Elimina la DerivedDatacartella per il progetto. Guarda in Preferenze Xcode -> Posizioni per vedere dove lo salvi.


È importante notare che DerivedDatanon è necessariamente dove si trova la tua Buildcartella, questo mi ha aiutato molto, grazie!
Nit

1
elimina moduleCachedentro DerivedDataanche
whtlnv il

Dovresti prima provare a "pulire" come dicono le altre risposte. Quando questo non funziona, eliminerei semplicemente in modo ricorsivo l'intera DerivedDatacartella ... "Nuke dall'orbita ... unico modo per essere sicuri." @whitelionV questo sarebbe anche rm moduleCachee tutto il resto lì dentro.
wcochran,

39

Sembra che il prodotto> Clean Build Folder ... (con il tasto Opzione premuto) funzioni per la maggior parte delle persone. Vedi la risposta selezionata di @gaige.

Se sei diverso dalla maggior parte delle persone (me compreso) e questo ti crea ancora problemi, XCode ha probabilmente lasciato le tue intestazioni precompilate condivise altrove. Per me erano in una cartella simile a questa:

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

Ho appena eliminato l'intera cartella SharedPrecompiledHeaders e questo ha risolto le cose per me. Non vorrei toccare molto altro qui ...


2
Questo ha risolto questo problema per me. Per me è perché ho una build guidata dalla riga di comando.
ThomasW

2
In questo caso puoi trovare quella cartella nella trascrizione della build di Xcode. Ho cercato la stringa "SharedPrecompiledHeaders"
José Manuel Sánchez,

6
Sì, questa è la soluzione giusta. Specialmente se costruisci dalla riga di comando o hai uno script di compilazione. La posizione delle intestazioni precompilate è disponibile nelle impostazioni di compilazione, "Posizioni delle build" -> Percorso memorizzato nella cache delle intestazioni precompilate.
karim,

Come si trova la directory var?
GoldenJoe,

1
@GoldenJoe Open Finder Shift-Cmd-Ge digita/var
Sedes il

23

Vai su Preferenze Xcode-> Posizioni (come menzionato nella risposta di wcochran) e rinomina semplicemente la tua cartella DerivedData. Ho semplicemente cambiato il mio da "DerivedData" a "DerivedData2" e questo ha costretto il sistema a smettere di fare riferimento alla vecchia posizione. Questo mi ha risolto quando nessuna delle altre risposte ha funzionato. Vedi foto:

inserisci qui la descrizione dell'immagine


15

Nessuna delle altre opzioni ha funzionato per me, ecco cosa l'ha risolto:

Ho eliminato la cartella della cache su /Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/(anche rinominando funziona).

Prova a eliminare la cartella menzionata nell'errore, se il tuo errore è simile al seguente:

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


Si hai ragione. Nessuna delle precedenti funzioni per me. Basta eliminare la cartella menzionata e ricostruire, tutto qui.
Zhang Buzz,

Questa è la risposta corretta Pulisci / elimina DerivedData non funziona per me dopo aver spostato il progetto su un altro percorso.
Bill Chan,


13

Nella directory di ios del progetto, andare a costruire e cancellare ModuleCache cartella. Esegui di react-native run-iosnuovo, dovrebbe funzionare come previsto. Sommario -rm -rf ios/build/ModuleCache


Sì, anche su reattivo-nativo e build funziona da Xcode ma non dalla CLI usando npm run ios. La rimozione della cache come suggerito ha risolto il problema.
dakt

6

Dopo aver aggiornato Xcode lo stavo ottenendo con più progetti. Clean Build Folder e Clean non hanno avuto alcun effetto: la risposta di @sedes e il commento di @ josema.vitaminew sono stati utili per me. Ma può essere complicato a meno che tu non usi un po 'di astuzia, quindi ecco un collegamento passo dopo passo:

  1. vai al registro di build non riuscito
  2. usa cmd-f "SharedPrecompiledHeaders" per trovarlo (sarà nel mezzo di un'enorme linea di comando complessa orribile)
  3. trascina e seleziona il testo "SharedPrecompiledHeaders" e tutti i caratteri PRIMA ma NON DOPO che non arrivi all'inizio di quel bit di percorso (sempre nel mezzo del grande blocco di testo) ad es. per me: "/ var / cartelle / 03 /n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
  4. apri il Finder
  5. menu: Vai -> Vai alla cartella ...
  6. copia / incolla il percorso selezionato
  7. in "SharedPrecompiledHeaders" elimina TUTTE le sottocartelle (questo è sicuro: sono solo i dati memorizzati nella cache)

... e ora tutti i tuoi progetti saranno "Risolti", ma dovranno ricostruire se stessi per la prima volta con zero cache (quindi la PROSSIMA build SOLO sarà più lenta del normale).


5

nel mio caso mi sono sbarazzato di tutti i file in SharedPrecompiledHeaders in questo modo e tutto ha iniziato a funzionare bene:

sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir sudo find dir -name \* -type f -delete

Questo è qualcosa che posso facilmente usare in una sceneggiatura, quindi mi piace ... Non ho scoperto nessun brutto caso [ancora]
Matt,

5

Ho riscontrato questo errore durante il tentativo di creare un progetto con Swift Package Manager.

La soluzione è semplicemente eliminare la .builddirectory.


4

Soprattutto se si crea dalla riga di comando o si dispone di uno script di compilazione, la pulizia del target xcode non è sufficiente. Hai eliminato questa cartella.

La posizione dell'intestazione precompilata è disponibile in

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

Elimina questa cartella con,

#rm -fr SharedPrecompiledHeaders

inserisci qui la descrizione dell'immagine


Il mio percorso della cache era nella cartella build / build / ModuleCache /. Rimuoverlo dalla vecchia posizione non ha funzionato
TheJeff

3

Se non viene risolto mediante la pulizia. È un problema con la cache della build: tieni premuto il tasto Opzione e vai a Prodotto> Pulisci cartella di build. Ciò ha risolto il mio problema.


3

Nel mio caso Xcode stava creando la cartella DerivedData nel bundle principale del mio progetto (/ Users / Path_to_your_project_source_code / YourProjectName / DerivedData)

Ho appena eliminato questa cartella dal mio pacchetto di codice sorgente e ora funziona.

Per selezionare Vai a Preferenze Xcode-> Posizioni e vedere se DerivedData è selezionato su "Relativo". Vedi l'immagine sotto inserisci qui la descrizione dell'immagine


3

Per me questo accadrebbe sempre quando copio il mio progetto in un'altra posizione. Lo farei per spingerlo in un repository o qualcosa del genere.

Devo eliminare la cartella Build (rm -rf Build /) nelle posizioni vecchie e nuove per farlo funzionare. Ha senso perché la cartella Build avrà dati irrilevanti per la nuova posizione.

La pulizia dei dati derivati ​​o l'eliminazione delle cartelle sharedPrecompiledHeaders non ha funzionato in questo caso.


2

dovresti tenere premuto "shift + command + C", e poi costruirai con successo


2

La pulizia e / o l'eliminazione dei dati derivati ​​non ha funzionato per me. Ciò che ha funzionato è stato toccare / salvare il file .pch (aggiungere un carattere, quindi eliminarlo) per forzare la ricostruzione. Questo ha funzionato.


Questo ha funzionato per me. Ho cancellato la directory SharedPrecompiledHeaders, clean build, clean build folder, ecc. Questo era su Xcode 5.1
migs647

Dov'è il file PCH?
TheJeff

2

Se fare una build pulita non funziona per te, cerca i file PCH /var/folders/../SharedPrecompiledHeaderse rimuovi i file PCH, che hanno funzionato per me.


2
C'è una risposta identica a questa con maggiori dettagli sopra pubblicati da @sedes. Si prega di provare a non pubblicare risposte duplicate.
Michaellindahl,

2

Puoi provare a pulire il prodotto o la cartella di build:

SHIFT+ COMMAND+K

OPTION+ SHIFT+ COMMAND+K


2

Se stai eseguendo una compilazione da riga di comando xcodebuild, verifica se l' -derivedDataPath BUILD_DIRopzione è utilizzata. In tal caso, la directory ModuleCache.noindex si troverà in BUILD_DIR anziché nella normale posizione Xcode. Elimina la directory ModuleCache.noindex e sarai pronto.

Mi sono imbattuto in questa situazione perché sto costruendo un'app React Native e il client iOS è in genere creato dalla riga di comando tramite il set di strumenti React Native.


1

Ho provato a pulire il progetto e pulire la cartella di build che entrambi non hanno funzionato.

Successivamente, ho chiuso completamente xCode, ho eliminato la cartella dei dati derivati ​​nella sua posizione standard: ~ / Library / Developer / Xcode / DerivedData, ho riavviato xCode e ho creato il progetto.

Sembrava aver risolto il problema per me.


Potresti elaborare un po 'per favore?
Richard Dally, il

La chiusura di Xcode, l'esecuzione rm -rf ~/Library/Developer/Xcode/DerivedDatain Terminal e quindi l'apertura di Xcode lo ha fatto per me. Mi sono anche assicurato che le mie posizioni (Xcode -> Preferenze -> Posizioni) fossero tutte predefinite.
sman591,

1

AGGIORNATO

Ha funzionato perfettamente per me:

  • Chiudi il tuo progetto o area di lavoro.
  • Nel Finder: ⇧shift + ⌘cmd + G
  • Incolla: ~ / Library / Developer / Xcode / DerivedData /
  • Elimina la cartella ModuleCache e svuota il cestino.
  • Apri il tuo progetto.
  • Pulito: ⇧shift + ⌘cmd + K
  • Costruzione: ⌘cmd + B


Riferimento xCode 7.3.1 qui


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.