Apa itu file Prefix.pch di Xcode?

100

Begitu banyak pengembang menambahkan berbagai makro kemudahan ke Prefix.pch. Tapi pertanyaan saya adalah Prefix.pchfile apa itu .

  • Jika saya menghapus Prefix.pchfile itu dari saya Xcode, apakah aplikasi saya akan berjalan? Atau akankah itu menunjukkan kesalahan? Atau akankah itu macet selama pembuatan?

  • Bagaimana cara menjalankan aplikasi saya tanpa Prefix.pchfile

SR Nayak
sumber

Jawaban:

117

Header yang telah dikompilasi sebelumnya.

Apa itu?

A Prefix.pchadalah tajuk yang telah dikompilasi sebelumnya. Header prakompilasi diciptakan untuk mempercepat kompilasi . Daripada mem-parsing file header yang sama berulang kali, file ini diurai satu kali sebelumnya.

Xcode

Di Xcode, Anda menambahkan impor file header yang Anda inginkan di "prefix header", dan mengaktifkannya Precompile Prefix Headersehingga mereka bisa dikompilasi sebelumnya. Tetapi ide di balik header awalan berbeda dari precompiling.

Header awalan secara implisit disertakan di awal setiap file sumber. Ini seperti setiap penambahan file sumber

#import "Prefix.pch"

di bagian atas file, sebelum yang lainnya.

Menghapusnya.

Anda dapat menghapus header yang telah dikompilasi sebelumnya. Pertanyaan ini telah terjawab di utas yang saya tautkan di bawah. Ini berisi semua informasi yang Anda butuhkan serta komentar yang berguna.

Apakah OK untuk menghapus file Prefix.pch dari proyek Xcode?

RaffAl
sumber
24

Apa itu file Prefix.pch?

A .pch adalah Header yang Dikompilasi Sebelumnya.

Dalam bahasa pemrograman C dan C ++, file header adalah file yang teksnya dapat secara otomatis disertakan dalam file sumber lain oleh preprocessor C, biasanya ditentukan dengan menggunakan arahan compiler di file sumber.

Header prefiks dikompilasi dan disimpan dalam cache, dan kemudian secara otomatis disertakan dalam setiap file selama kompilasi. Ini dapat mempercepat kompilasi, dan memungkinkan Anda menyertakan file tanpa menambahkan pernyataan import ke setiap file yang menggunakannya. Mereka tidak diperlukan, dan sebenarnya kompilasi lambat setiap kali Anda mengubahnya.

Ya, Anda dapat mengkompilasi dan menjalankan proyek tanpa file .pch

Di Xcode, buka setelan build target Anda (Command-Option-E, tab build) dan hapus centang Precompile Prefix Header (GCC_PRECOMPILE_PREFIX_HEADER). Anda juga dapat menghapus nilai pengaturan Prefix Header jika diinginkan.

Perhatikan juga bahwa,

Jangan letakkan makro di file a.pch! File .pch, menurut definisi, adalah header khusus proyek yang telah dikompilasi. Ini benar-benar tidak boleh digunakan di luar konteks proyek dan tidak boleh berisi apa pun kecuali #includes dan #imports.

Jika Anda memiliki beberapa makro dan yang ingin Anda bagi di antara header, maka tempelkan di file header mereka sendiri - Common.h atau apa pun - dan # sertakan itu di awal .pch

Hemang
sumber
Harap pertimbangkan untuk menambahkan komentar untuk menunjukkan alasan tidak mendukung misi lama ini.
Hemang
7

Header prefiks dikompilasi dan disimpan dalam cache, dan kemudian secara otomatis disertakan dalam setiap file selama kompilasi. Ini dapat mempercepat kompilasi, dan memungkinkan Anda menyertakan file tanpa menambahkan pernyataan import ke setiap file yang menggunakannya. Mereka tidak diperlukan, dan sebenarnya kompilasi lambat setiap kali Anda mengubahnya.

Umumnya .pchformasi penamaan file adalahyourProjectName-Prefix.pch

iPatel
sumber
1

Sejarah:

#include => #import => .pch

#include vs #import

Header yang Dikompilasi - prefix.pch

#includevs @importmemiliki kelemahan - waktu pembuatan yang lambat karena kompiler harus mengurai dan mengkompilasi sebanyak .hfile yang diimpor.

Precompiled header file - .pch- mengumpulkan tajuk umum. Jika file ini adalah file yang telah dikompilasi, file tersebut dapat digunakan dalam file sumber yang mempercepat waktu pembuatan.

Mari kita lihat Prefix.pchcontoh:

#ifdef __OBJC__
    #import <UIKit/UIKit.h>
    #import <Foundation/Foundation.h>
#endif

Untuk menambahkan .pchfile, buka Build Settings:

masukkan deskripsi gambar di sini

Pengembang harus mengelola .pchfile yang membebankan biaya tambahan untuk mendukungnya.

Langkah selanjutnya adalah @import[Tentang]

yoAlex5
sumber