Co to jest plik Prefix.pch w Xcode?

100

Tak wielu programistów dodaje różne wygodne makra do Prefix.pch. Ale moje pytanie brzmi, co to za Prefix.pchplik.

  • Jeśli usunę ten Prefix.pchplik z mojego Xcode, czy moja aplikacja będzie działać? A może pokaże jakiś błąd? A może ulegnie awarii podczas kompilacji?

  • Jak mogę uruchomić moją aplikację bez Prefix.pchpliku

SR Nayak
źródło

Odpowiedzi:

117

Wstępnie skompilowany nagłówek.

Co to jest?

A Prefix.pchto prekompilowany nagłówek. Prekompilowane nagłówki zostały wynalezione, aby przyspieszyć kompilację . Zamiast w kółko analizować te same pliki nagłówkowe, pliki te są analizowane raz, z wyprzedzeniem.

Xcode

W Xcode dodajesz import żądanych plików nagłówkowych w „nagłówku prefiksu” i włączasz je, Precompile Prefix Headeraby były prekompilowane. Ale idea nagłówka prefiksu różni się od prekompilacji.

Nagłówek prefiksu jest niejawnie dołączany na początku każdego pliku źródłowego. To tak, jakby każdy plik źródłowy dodaje

#import "Prefix.pch"

na początku pliku, przede wszystkim.

Usuwam to.

Możesz usunąć prekompilowany nagłówek. Na to pytanie udzielono już odpowiedzi w wątku, do którego odsyłam poniżej. Zawiera wszystkie potrzebne informacje, a także przydatne komentarze.

Czy można usunąć plik Prefix.pch z projektu Xcode?

RaffAl
źródło
24

Czym jest plik Prefix.pch?

.Pch to wstępnie skompilowany nagłówek.

W językach programowania C i C ++ plik nagłówkowy to plik, którego tekst może być automatycznie dołączony do innego pliku źródłowego przez preprocesor C, zwykle określany przez użycie dyrektyw kompilatora w pliku źródłowym.

Nagłówki prefiksów są kompilowane i przechowywane w pamięci podręcznej, a następnie automatycznie dołączane do każdego pliku podczas kompilacji. Może to przyspieszyć kompilację i umożliwia dołączenie pliku bez dodawania instrukcji importu do każdego używającego go pliku. Nie są wymagane, a kompilacja jest powolna, gdy tylko je zmienisz.

Tak, możesz skompilować i uruchomić projekt bez pliku .pch

W Xcode przejdź do ustawień kompilacji celu (Command-Option-E, karta kompilacji) i odznacz opcję Precompile Prefix Header (GCC_PRECOMPILE_PREFIX_HEADER). Jeśli chcesz, możesz również usunąć wartość ustawienia nagłówka prefiksu.

Pamiętaj też, że

Nie umieszczaj makr w pliku a.pch! Plik .pch jest z definicji prekompilowanym nagłówkiem specyficznym dla projektu. To naprawdę nie powinno być używane poza kontekstem projektu i naprawdę nie powinno zawierać niczego poza #includes i #imports.

Jeśli masz jakieś makra i takie, które chcesz udostępnić między nagłówkami, umieść je we własnym pliku nagłówkowym - Common.h lub cokolwiek innego - i # dołącz to na początku .pch

Hemang
źródło
Rozważ dodanie komentarza, aby wskazać powód odrzucenia tego starszego zadania.
Hemang
7

Nagłówki prefiksów są kompilowane i przechowywane w pamięci podręcznej, a następnie automatycznie dołączane do każdego pliku podczas kompilacji. Może to przyspieszyć kompilację i umożliwia dołączenie pliku bez dodawania instrukcji importu do każdego używającego go pliku. Nie są wymagane, a kompilacja jest powolna, gdy tylko je zmienisz.

Generalnie .pchformatowanie nazw plików toyourProjectName-Prefix.pch

iPatel
źródło
1

Historia:

#include => #import => .pch

#include vs #import

Prekompilowane nagłówki - prefix.pch

#includevs @importma wadę - długi czas kompilacji, ponieważ kompilator musi przeanalizować i skompilować tyle razy, ile.h plików zostało zaimportowanych.

Precompiled header file - .pch- zbiera wspólne nagłówki. Kiedy ten plik jest wstępnie skompilowany, może być używany w plikach źródłowych, co przyspiesza czas kompilacji.

Rzućmy okiem na Prefix.pchpróbkę:

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

Aby dodać .pchplik przejdź do Build Settings:

wprowadź opis obrazu tutaj

Programista musi zarządzać .pchplikiem, który nakłada dodatkowe koszty za jego obsługę.

Następny krok to @import[Informacje]

yoAlex5
źródło