很多开发人员都在Prefix.pch中添加各种方便的宏,但我的问题是Prefix.pch文件是什么。
Prefix.pch
Xcode
4smxwvx51#
一个Prefix.pch是一个预编译头文件。预编译头文件的发明是为了使编译更快。这些头文件只被提前解析一次,而不是一遍又一遍地解析。
在Xcode中,你可以在一个“前缀头”中添加你想要的头文件的导入,并启用Precompile Prefix Header,这样它们就可以被预编译,但是前缀头背后的思想与预编译是不同的。每个源文件的开头都隐式包含一个前缀头。就像每个源文件都添加
Precompile Prefix Header
#import "Prefix.pch"
在文件的顶部,在其他任何事情之前。
你可以删除预编译头。这个问题已经在我下面链接的主题中回答过了。它包含了你需要的所有信息以及有用的注解。Is it OK to remove Prefix.pch file from the Xcode project?
kcwpcxri2#
.pch是一个预编译头文件。在C和C++编程语言中,头文件是一个文件,其文本可以被C预处理器自动包含在另一个源文件中,通常通过使用源文件中的编译器指令来指定。前缀头被编译并存储在缓存中,然后在编译期间自动包含在每个文件中。这可以加快编译速度,并允许您包含文件,而无需向使用该文件的每个文件添加import语句。它们不是必需的,实际上,无论何时更改它们,编译都会变慢。
在Xcode中,转到目标的构建设置(Command-Option-E,build标签),取消选中Precompile Prefix Header(GCC_PRECOMPILE_PREFIX_HEADER)。如果愿意,您也可以删除Prefix Header设置的值。
不要把宏放在.pch文件中!.pch文件是一个项目特定的预编译头文件。它不应该被用在项目的上下文之外,它不应该包含任何东西,除了#includes和#imports。如果你有一些宏,你想在头文件之间共享,那么把它们放在它们自己的头文件中--Common. h或者其他什么--然后#include它在.pch的开头
smdnsysy3#
前缀头被编译并存储在缓存中,然后在编译期间自动包含在每个文件中。这可以加快编译速度,并允许您包含文件,而无需向使用该文件的每个文件添加import语句。它们不是必需的,实际上,无论何时更改它们,编译都会变慢。通常.pch文件命名格式为yourProjectName-Prefix.pch
.pch
yourProjectName-Prefix.pch
0mkxixxg4#
前缀标头和预编译标头(.pch)历史记录:
#include -> #import(https://stackoverflow.com/a/59212007/4770877)-〉预编译头文件.pch -〉@import Module(ObjC);(https://stackoverflow.com/a/59213796/4770877)-〉import Module(Swift)(https://stackoverflow.com/a/67130959/4770877)
预编译标头-前缀.pch
创建新的.pch文件
File -> New -> File... -> PCH File
PrefixHeader.pch样品:
PrefixHeader.pch
#ifndef PrefixHeader_pch #define PrefixHeader_pch #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #endif
在Xcode 6中,您应该手动设置.pch,以前它被称为<product_name>-Prefix.pch
<product_name>-Prefix.pch
X代码:
Prefix Header(GCC_PREFIX_HEADER)-.pch的路径。将.pch中的所有内容添加到所有源文件SomeFile1.h
Prefix Header(GCC_PREFIX_HEADER)
//You can skip this section. It will be compiled //#import <UIKit/UIKit.h> //#import <Foundation/Foundation.h> //implicitly next line is used #import "PrefixHeader.pch"
Precompile Prefix Header(GCC_PRECOMPILE_PREFIX_HEADER)-如果为Yes,则将使用GCC_PREFIX_HEADER中的Prefix headers一次 * 以生成预编译源代码,并将其存储在缓存中以加快生成时间
Precompile Prefix Header(GCC_PRECOMPILE_PREFIX_HEADER)
GCC_PREFIX_HEADER
Prefix headers
//path to cached precompiled headers /<some_path>/DerivedData/ExperiementsModuleSwift-dsetoksxykdmgvczgtnmaqmjwhzk/Build/Intermediates.noindex/PrecompiledHeaders/SharedPrecompiledHeaders/14385052922615550324 //e.g /Users/alex/Library/Developer/Xcode/DerivedData/ExperiementsModuleSwift-dsetoksxykdmgvczgtnmaqmjwhzk/Build/Intermediates.noindex/PrecompiledHeaders/SharedPrecompiledHeaders/14385052922615550324
#导入与pch
此功能缩短了构建时间(与#include/#import相比),因为预编译prefix headers(全局)。当prefix headers的某些内容更改时,意味着编译必须重新编译该内容。这就是为什么您应该在此处使用稳定(不经常更改)prefix headers,否则您看不到构建时间的改进。此外,您应该支持它
#include/#import
prefix headers
4条答案
按热度按时间4smxwvx51#
预编译标头。
这是什么?
一个
Prefix.pch
是一个预编译头文件。预编译头文件的发明是为了使编译更快。这些头文件只被提前解析一次,而不是一遍又一遍地解析。X代码
在Xcode中,你可以在一个“前缀头”中添加你想要的头文件的导入,并启用
Precompile Prefix Header
,这样它们就可以被预编译,但是前缀头背后的思想与预编译是不同的。每个源文件的开头都隐式包含一个前缀头。就像每个源文件都添加
在文件的顶部,在其他任何事情之前。
删除它。
你可以删除预编译头。这个问题已经在我下面链接的主题中回答过了。它包含了你需要的所有信息以及有用的注解。
Is it OK to remove Prefix.pch file from the Xcode project?
kcwpcxri2#
什么是Prefix.pch文件?
.pch是一个预编译头文件。
在C和C++编程语言中,头文件是一个文件,其文本可以被C预处理器自动包含在另一个源文件中,通常通过使用源文件中的编译器指令来指定。
前缀头被编译并存储在缓存中,然后在编译期间自动包含在每个文件中。这可以加快编译速度,并允许您包含文件,而无需向使用该文件的每个文件添加import语句。它们不是必需的,实际上,无论何时更改它们,编译都会变慢。
是,您可以在没有.pch文件的情况下编译和运行项目
在Xcode中,转到目标的构建设置(Command-Option-E,build标签),取消选中Precompile Prefix Header(GCC_PRECOMPILE_PREFIX_HEADER)。如果愿意,您也可以删除Prefix Header设置的值。
还要注意,
不要把宏放在.pch文件中!.pch文件是一个项目特定的预编译头文件。它不应该被用在项目的上下文之外,它不应该包含任何东西,除了#includes和#imports。
如果你有一些宏,你想在头文件之间共享,那么把它们放在它们自己的头文件中--Common. h或者其他什么--然后#include它在.pch的开头
smdnsysy3#
前缀头被编译并存储在缓存中,然后在编译期间自动包含在每个文件中。这可以加快编译速度,并允许您包含文件,而无需向使用该文件的每个文件添加import语句。它们不是必需的,实际上,无论何时更改它们,编译都会变慢。
通常
.pch
文件命名格式为yourProjectName-Prefix.pch
0mkxixxg4#
前缀标头和预编译标头(.pch)
历史记录:
#include -> #import(https://stackoverflow.com/a/59212007/4770877)-〉预编译头文件.pch -〉@import Module(ObjC);(https://stackoverflow.com/a/59213796/4770877)-〉import Module(Swift)(https://stackoverflow.com/a/67130959/4770877)
预编译标头-前缀.pch
创建新的.pch文件
PrefixHeader.pch
样品:在Xcode 6中,您应该手动设置
.pch
,以前它被称为<product_name>-Prefix.pch
X代码:
Prefix Header(GCC_PREFIX_HEADER)
-.pch
的路径。将.pch
中的所有内容添加到所有源文件SomeFile1.h
Precompile Prefix Header(GCC_PRECOMPILE_PREFIX_HEADER)
-如果为Yes,则将使用GCC_PREFIX_HEADER
中的Prefix headers
一次 * 以生成预编译源代码,并将其存储在缓存中以加快生成时间#导入与pch
此功能缩短了构建时间(与
#include/#import
相比),因为预编译prefix headers
(全局)。当prefix headers
的某些内容更改时,意味着编译必须重新编译该内容。这就是为什么您应该在此处使用稳定(不经常更改)prefix headers
,否则您看不到构建时间的改进。此外,您应该支持它