Bagaimana cara memperbaiki kesalahan PCH?

132

Ketika saya mencoba untuk membangun aplikasi saya Xcode, saya mendapatkan pesan kesalahan ini:

File PCH dibangun dari cabang berbeda ((clang-425.0.24)) dari pada kompiler ((clang-425.0.27))

Itu tidak terjadi sebelumnya, tapi ini adalah build pertama setelah memperbarui Xcode.

Aplikasi lain berfungsi, tetapi tidak yang spesifik ini.

Jika saya mematikan "Precompile Prefix Header"pengaturan, itu berfungsi.

Bagaimana cara memperbaiki kesalahan ini dan tetap mengaktifkan pengaturan itu?

Macro206
sumber

Jawaban:

246

Ini sering merupakan masalah caching. Biasanya ini dapat diatasi dengan menekan tombol Option dan memilih Produk> Clean Build Folder ...

gaige
sumber
3
Ini tidak memperbaiki kesalahan saya. Saya juga melakukan pembersihan penuh dan menghapus data yang diturunkan.
Ben S
6
Bekerja untuk saya, kecuali Product> di bawah Cleandan tidak perlu untuk kunci perintah. (Xcode 4.6.1)
Steve Haley
1
@ SveveHaley Ada Product > Clean, tapi itu melakukan pekerjaan yang kurang teliti. Beberapa orang dapat membeli Product > Clean, karena sebagian besar Product > Clean Build Folder...sudah cukup, dan yang lain memerlukan penghapusan manual seperti yang ditunjukkan pada jawaban @Sedes di bawah ini.
gaige
7
Saya tahu pertanyaan lamanya, tetapi perbaikan yang disebutkan di atas tidak membantu saya. Hanya dengan menghapus Data Berasal dan membangun proyek kembali berfungsi dengan baik.
Ankit Jain
2
bisakah kamu melakukan rm -rf / ios / build?
SuperUberDuper
47

Hapus DerivedDatafolder untuk proyek tersebut. Lihat di bawah preferensi Xcode -> Lokasi untuk melihat di mana Anda menyimpannya.

wcochran
sumber
Penting untuk dicatat bahwa DerivedDatatidak harus di mana Buildfolder Anda berada, ini banyak membantu saya, terima kasih!
Nit
1
hapus moduleCachebagian dalamnya DerivedDatajuga
whtlnv
Anda harus terlebih dahulu mencoba "membersihkan" seperti jawaban yang lain katakan. Ketika ini tidak berhasil, saya hanya akan secara rekursif menghapus seluruh DerivedDatafolder ... "nuke from orbit ... satu-satunya cara untuk memastikan." @ whitelionV ini juga akan rm moduleCachedan semua yang ada di sana.
wcochran
39

Tampaknya Product> Clean Build Folder ... (dengan penekanan tombol Pilihan) berfungsi untuk kebanyakan orang. Lihat jawaban yang dipilih oleh @gaige.

Jika Anda tidak seperti kebanyakan orang (termasuk saya sendiri) dan ini masih menyebabkan Anda kesulitan, XCode kemungkinan telah meninggalkan tajuk yang telah Anda bagikan sebelumnya di tempat lain. Bagi saya mereka berada di folder yang mirip dengan ini:

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

Saya baru saja menghapus seluruh folder SharedPrecompiledHeaders dan itu memecahkan masalah bagi saya. Saya tidak akan menyentuh banyak hal lain di sini ...

Sedes
sumber
2
Ini memperbaiki masalah ini untuk saya. Bagi saya itu karena saya memiliki build berbasis baris perintah.
ThomasW
2
Jika ini adalah kasus Anda, Anda dapat menemukan folder itu dalam transkrip build Xcode. Saya mencari string "SharedPrecompiledHeaders"
José Manuel Sánchez
6
Ya, ini solusi yang tepat. Khususnya jika Anda membangun dari baris perintah atau Anda memiliki skrip membangun. Lokasi header yang dikompilasi dapat ditemukan di pengaturan build, "Membangun lokasi" -> path cache header dikompilasi.
karim
Bagaimana Anda menemukan direktori var?
GoldenJoe
1
@GoldenJoe Open Finder, Shift-Cmd-Gdan ketik/var
Sedes
23

Pergi ke Preferensi Xcode-> Lokasi (seperti yang disebutkan dalam jawaban oleh wcochran) dan cukup ganti nama folder DerivedData Anda. Saya hanya mengubah milik saya dari "DerivedData" menjadi "DerivedData2" dan itu memaksa sistem untuk berhenti merujuk lokasi lama. Ini memperbaikinya bagi saya ketika tidak ada jawaban lain yang berfungsi. Lihat foto:

masukkan deskripsi gambar di sini

Alyoshak
sumber
15

Tidak ada opsi lain yang berfungsi untuk saya, berikut ini yang memperbaikinya:

Saya menghapus folder cache di /Users/(Yourname)/Library/Developer/Xcode/DerivedData/ModuleCache/(menamai ulang itu berfungsi juga).

Coba hapus folder yang disebutkan dalam kesalahan, jika kesalahan Anda terlihat seperti ini:

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
sumber
Ya kamu benar. Tidak satu pun di atas berfungsi untuk saya. Hapus saja folder yang disebutkan, dan bangun kembali, hanya itu.
Zhang Buzz
Ini jawaban yang benar. Bersihkan / hapus DerivedData tidak berfungsi untuk saya setelah memindahkan proyek ke jalur lain.
Bill Chan
13

Menghapus Builddan DerivedDatafolder dari lokasi proyek di Finder bekerja untuk saya.

spfursich
sumber
mungkin .buildfolder untuk beberapa orang (termasuk saya)
Florian Pfisterer
Bekerja dengan baik. Lihat juga stackoverflow.com/questions/33653727/…
Mr-IDE
13

Di direktori proyek ios Anda, buka membangun dan menghapus folder ModuleCache . Jalankan react-native run-ioslagi, itu harus bekerja seperti yang diharapkan. Ringkasan -rm -rf ios/build/ModuleCache

Ritik Rishu
sumber
Yap, juga pada reaksi asli dan membangun karya dari Xcode tetapi tidak dari CLI menggunakan npm run ios. Menghapus cache seperti yang disarankan menyelesaikan masalah.
dakt
6

Setelah memutakhirkan Xcode saya mendapatkan ini dengan beberapa proyek. Clean Build Folder and Clean tidak berpengaruh - @sedes menjawab dan @ josema.vitaminew melakukannya untuk saya. Tapi itu bisa rumit kecuali jika Anda menggunakan sedikit kelicikan, jadi inilah pintasan langkah demi langkah:

  1. buka log build yang gagal
  2. gunakan cmd-f "SharedPrecompiledHeaders" untuk menemukannya (itu akan berada di tengah-tengah commandline kompleks besar yang mengerikan)
  3. seret-pilih teks "SharedPrecompiledHeaders" dan semua karakter SEBELUM tapi JANGAN SETELAH sampai Anda memulai bit path itu (masih di tengah blok teks besar) misalnya untuk saya: "/ var / folder / 03 /n71d4r551jv40j5nb8r9fjy80000gn/C/com.apple.Xcode.501/SharedPrecompiledHeaders
  4. Finder terbuka
  5. menu: Buka -> Buka folder ...
  6. salin / tempel jalur yang dipilih
  7. di "SharedPrecompiledHeaders" hapus SEMUA sub-folder (ini aman: ini hanya data yang di-cache)

... dan sekarang semua proyek Anda akan "diperbaiki", tetapi harus membangun kembali sendiri pertama kali dengan nol caching (sehingga NEXT build ONLY akan lebih lambat dari biasanya).

Adam
sumber
5

dalam kasus saya, saya menyingkirkan semua file di bawah SharedPrecompiledHeaders dengan cara ini dan semuanya mulai berfungsi dengan baik:

sudo find /var/folders/ -type d -name "SharedPrecompiledHeaders" | xargs -n 1 -I dir sudo find dir -name \* -type f -delete
Hamid Tavakoli
sumber
Ini adalah sesuatu yang dapat saya gunakan dengan mudah dalam sebuah skrip, jadi saya menyukainya ... Saya belum menemukan kasus buruk [belum]
Matt
5

Saya menemukan kesalahan ini ketika mencoba membangun sebuah proyek dengan Swift Package Manager.

Solusinya hanya menghapus .builddirektori.

Zigii Wong
sumber
4

Khususnya jika Anda membangun dari baris perintah atau Anda memiliki skrip pembangunan, membersihkan target xcode tidak cukup. Anda telah menghapus folder ini.

Lokasi header yang dikompilasi dapat ditemukan di

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

Hapus folder ini dengan,

#rm -fr SharedPrecompiledHeaders

masukkan deskripsi gambar di sini

karim
sumber
Jalur cache saya ada di folder build / build / ModuleCache /. Menghapusnya dari lokasi lama tidak berhasil
TheJeff
3

Jika tidak diselesaikan dengan pembersihan. Ini masalah cache build - tahan tombol Option dan arahkan ke Produk> Clean Build Folder. Itu memperbaiki masalah saya.

Vardhan
sumber
3

Dalam kasus saya Xcode membuat folder DerivedData dalam bundel utama proyek saya (/ Users / Path_to_your_project_source_code / YourProjectName / DerivedData)

Saya baru saja menghapus folder ini dari bundel kode sumber saya dan sekarang sudah berfungsi.

Untuk memeriksa Pergi ke Preferensi Xcode-> Lokasi dan lihat apakah DerivedData dipilih untuk "Relatif". Lihat gambar di bawah ini masukkan deskripsi gambar di sini

Dilip Saket
sumber
3

Bagi saya ini akan selalu terjadi ketika saya menyalin proyek saya ke lokasi lain. Saya akan melakukan ini untuk mendorongnya menjadi repo atau sesuatu.

Saya harus menghapus folder Bangun (rm -rf Build /) di lokasi lama dan baru untuk membuatnya berfungsi. Masuk akal karena folder Bangun akan memiliki data yang tidak relevan dengan lokasi baru.

Membersihkan Data yang Diperoleh atau menghapus folder sharedPrecompiledHeaders tidak benar-benar melakukannya dalam kasus ini.

Jeff
sumber
2

Anda harus menahan "shift + command + C", dan kemudian Anda akan berhasil membangun

Peter Zhu
sumber
2

Membersihkan dan / atau menghapus data turunan tidak berhasil untuk saya. Apa yang berhasil adalah menyentuh / menyimpan file .pch (tambahkan karakter, lalu hapus) untuk memaksanya dibangun kembali. Ini berhasil.

Alfie Hanssen
sumber
Ini berhasil untuk saya. Saya menghapus direktori SharedPrecompiledHeaders, clean build, clean build folder, dll. Ini ada di Xcode 5.1
migs647
Di mana file PCH?
TheJeff
2

Jika melakukan build bersih tidak berhasil untuk Anda, cari file PCH di /var/folders/../SharedPrecompiledHeadersdan hapus file PCH, yang bekerja untuk saya.

Jonathan Lin
sumber
2
Ada jawaban yang identik dengan ini dengan lebih detail di atas diposting oleh @sedes. Cobalah untuk tidak mengirim jawaban rangkap.
michaellindahl
2

Anda dapat mencoba membersihkan produk atau folder build:

SHIFT+ COMMAND+K

OPTION+ SHIFT+ COMMAND+K

Mateus
sumber
2

Jika Anda melakukan pembangunan baris perintah xcodebuild, lihat apakah-derivedDataPath BUILD_DIR opsi tersebut digunakan. Jika demikian, direktori ModuleCache.noindex Anda akan berada di BUILD_DIR alih-alih lokasi Xcode yang normal. Hapus direktori ModuleCache.noindex dan Anda akan siap.

Saya mengalami situasi ini karena saya sedang membangun aplikasi React Native, dan klien iOS biasanya dibangun dari baris perintah melalui toolset React Native.

Phatmann
sumber
1

Saya sudah mencoba membersihkan proyek dan membersihkan folder build yang keduanya tidak berfungsi.

Setelah itu, saya keluar sepenuhnya dari xCode, menghapus folder data turunan di lokasi standar: ~ / Library / Developer / Xcode / DerivedData, mulai xCode lagi dan membangun proyek.

Itu tampaknya telah menyelesaikan masalah bagi saya.

tcd1980
sumber
Bisakah Anda menguraikan sedikit?
Richard Dally
Menutup Xcode, berjalan rm -rf ~/Library/Developer/Xcode/DerivedDatadi Terminal, dan kemudian membuka Xcode melakukannya untuk saya. Saya juga memastikan lokasi saya (Xcode -> Preferensi -> Lokasi) semuanya default.
sman591
1

DIPERBARUI

Ini bekerja dengan baik untuk saya:

  • Tutup proyek atau ruang kerja Anda.
  • Dalam Finder: ⇧shift + ⌘cmd + G
  • Rekatkan: ~ / Perpustakaan / Pengembang / Xcode / DerivedData /
  • Hapus folder ModuleCache dan kosongkan sampah.
  • Buka proyek Anda.
  • Bersih: ⇧shift + ⌘cmd + K
  • Bangun: ⌘cmd + B


referensi xCode 7.3.1 di sini

Daniel Morandini
sumber
0

Saya baru saja menghapus DerivedDatadan bekerja untuk saya.

KAUSHIK PARMAR
sumber