Xcode Help 官方文档大全(第二十九篇)----参考(一)(文件路徑警告)
活动构建操作(ACTION)
标识正在执行的构建系统操作的字符串。
其他SDK(ADDITIONAL_SDKS)
应该在基本SDK(SDKROOT)指定的顶层上分层的任何稀疏SDK的位置。如果列出多个SDK,则第一个优先级最高。此设置中指定的每个SDK都应该是“稀疏”的SDK,例如,不是整个macOS版本的SDK。
备用安装组(ALTERNATE_GROUP)
备用权限文件(ALTERNATE_PERMISSIONS_FILES)设置下列出的文件的组名或gid。
备用安装权限(ALTERNATE_MODE)
用于替代权限文件(ALTERNATE_PERMISSIONS_FILES)设置下列出的文件的权限。
备用安装所有者(ALTERNATE_OWNER)
备用权限文件(ALTERNATE_PERMISSIONS_FILES)设置下列出的文件的所有者名称或uid。
备用权限文件(ALTERNATE_PERMISSIONS_FILES)
应用备用所有者,组和权限的文件列表。
始终搜索用户路径(不推荐)(ALWAYS_SEARCH_USER_PATHS)
此设置从Xcode 8.3开始不推荐使用,未来的版本可能不支持此设置。建议您禁用该设置。
如果启用,#include <header.h> -style和#include“header.h”-style指令会在标题搜索路径(HEADER_SEARCH_PATHS)之前搜索用户标题搜索路径(USER_HEADER_SEARCH_PATHS)中的路径。因此,使用#include <header.h>时,用户标题(如自己的String.h标题)优先于系统标题。这是通过在用户标题搜索路径(USER_HEADER_SEARCH_PATHS)中提供的路径使用-iquote标志完成的。如果禁用了,并且编译器完全支持单独的用户路径,那么只能使用#include“header.h”风格的预处理器指令访问用户头文件。
出于向后兼容的原因,默认情况下启用此设置。强烈建议禁用它。
仅需要应用程序扩展安全API(APPLICATION_EXTENSION_API_ONLY)
如果启用,这会导致编译器和链接器禁止使用应用程序扩展无法使用的API,并且禁止链接到未启用此设置的框架。
转换已复制的文件(APPLY_RULES_IN_COPY_FILES)
使用“复制文件”构建阶段复制的文件默认保持不变。将其设置为TRUE会导致属性列表文件(.plist)和字符串文件按照属性列表输出编码(PLIST_FILE_OUTPUT_FORMAT)和字符串文件输出编码(STRINGS_FILE_OUTPUT_ENCODING)的指定进行转换。
体系结构(ARCHS)
产品将被构建的体系结构列表。这通常设置为由平台提供的预定义的构建设置。如果指定了多个体系结构,则将生成通用二进制文件。
资产目录应用程序图标集名称(ASSETCATALOG_COMPILER_APPICON_NAME)
资产目录应用程序图标集的名称,其内容将被合并到Info.plist中。
观察并发症名称(ASSETCATALOG_COMPILER_COMPLICATION_NAME)
从资产目录中使用的手表复杂功能的名称。
资产目录启动图像集名称(ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME)
将其内容合并到Info.plist中的资产目录启动图像集的名称。
排行榜标识符前缀(ASSETCATALOG_COMPILER_LEADERBOARD_IDENTIFIER_PREFIX)
资产目录中的排行榜可以选择指定一个游戏中心标识符。如果他们不这样做,他们的名字将以这个值为前缀来形成一个自动生成的标识符。
排行榜集标识符前缀(ASSETCATALOG_COMPILER_LEADERBOARD_SET_IDENTIFIER_PREFIX)
资产目录中的排行榜集合可以选择指定一个游戏中心标识符。如果他们不这样做,他们的名字将以这个值为前缀来形成一个自动生成的标识符。
优化(ASSETCATALOG_COMPILER_OPTIMIZATION)
没有值,编译器使用默认优化。您还可以指定时间来优化访问速度或空间,以优化较小的编译资产目录。
贴纸包标识符前缀(ASSETCATALOG_COMPILER_STICKER_PACK_IDENTIFIER_PREFIX)
资产目录中的贴纸包可以选择指定一个标识符。如果他们不这样做,他们的名字将以这个值为前缀来形成一个自动生成的标识符。
显示通知(ASSETCATALOG_NOTICES)
在编译资产目录时显示遇到的通知。
资产目录其他标志(ASSETCATALOG_OTHER_FLAGS)
将附加标志传递给资产目录编译器。
显示警告(ASSETCATALOG_WARNINGS)
显示编译资产目录期间遇到的警告。
资产包清单网址前缀(ASSET_PACK_MANIFEST_URL_PREFIX)
如果设置为空字符串以外的任何值,AssetPackManifest.plist文件中的每个URL都将由此字符串和附加资产包的名称组成。如果未设置,AssetPackManifest.plist中的URL将根据资产包的构建位置形成。前缀字符串不会以任何方式进行转义或引用,因此任何必要的转义都必须是URL字符串的一部分。此设置仅影响AssetPackManifest.plist文件中的URL - 它不会影响资产包在本地文件系统中的构建位置。
活动构建组件(BUILD_COMPONENTS)
在此操作过程中构建的组件列表。
构建变体(BUILD_VARIANTS)
将生成的链接二进制文件的构建变体列表。默认情况下,只生成正常的变体。其他常见值包括调试和配置文件。
BUILT_PRODUCTS_DIR
标识可以找到所有产品文件的目录。该目录包含产品文件或符号链接。运行脚本构建阶段可以使用此构建设置的值作为便捷方式来引用由一个或多个目标构建的产品文件,即使这些文件分散在整个目录层次结构中(例如,设置了部署位置(DEPLOYMENT_LOCATION)时到YES。
Bundle Loader(BUNDLE_LOADER)
指定将加载正在链接的包输出文件的可执行文件。根据指定的可执行文件检查包中的未定义符号,就好像它是该包所链接的动态库之一一样。
启用C ++容器溢出检查(CLANG_ADDRESS_SANITIZER_CONTAINER_OVERFLOW)
当启用Address Sanitizer时检查C ++容器溢出。此检查需要使用Address Sanitizer构建整个应用程序。否则,可能会报错。
在框架模块中允许非模块化包含(CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES)
通过启用此设置,可以在框架模块内使用非模块化包含。这本质上是不安全的,因为当导入框架和非模块化包含的任何客户端使用时,这样的标题可能会导致重复的定义。
死商店(CLANG_ANALYZER_DEADCODE_DEADSTORES)
检查存储在变量中的值并且不要再读取。
滥用Grand Central Dispatch(CLANG_ANALYZER_GCD)
检查Grand Central Dispatch API的滥用情况。
缺少本地化上下文注释(CLANG_ANALYZER_LOCALIZABILITY_EMPTY_CONTEXT)
当对NSLocalizedString()宏的调用缺少定位器的上下文注释时发出警告。
缺少本地化(CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED)
当非本地化的字符串被传递给预期本地化字符串的用户界面方法时发出警告。
不正确的内存管理(CLANG_ANALYZER_MEMORY_MANAGEMENT)
警告内存泄漏,免费使用以及其他API滥用。
滥用“非空”(CLANG_ANALYZER_NONNULL)
检查是否使用了非空参数和返回类型。
NSNumber和CFNumberRef的可疑转换(CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION)
当数字对象(例如NSNumber,CFNumberRef,OSNumber或OSBoolean的实例)被比较或转换为原始值而不是另一个对象时发出警告。
@与nil mutex同步(CLANG_ANALYZER_OBJC_ATSYNC)
警告用作@synchronized的互斥锁的nil指针。
滥用集合API(CLANG_ANALYZER_OBJC_COLLECTIONS)
如果使用非指针大小的值创建CF集合,则发出警告。检查NS集合是否使用非Objective-C类型元素进行初始化。
“-dealloc”中的实例清理不正确(CLANG_ANALYZER_OBJC_DEALLOC)
当在-dealloc中不正确地清理实例时发出警告。
滥用Objective-C的泛型(CLANG_ANALYZER_OBJC_GENERICS)
警告如果专门的泛型类型转换为不兼容的类型。
方法签名不匹配(CLANG_ANALYZER_OBJC_INCOMP_METHOD_TYPES)
警告使用类型不兼容的Objective-C方法签名。
错误处理CFError和NSError(CLANG_ANALYZER_OBJC_NSCFERROR)
如果接受CFErrorRef或NSError的函数不能指示发生了错误,则发出警告。
违反引用计数规则(CLANG_ANALYZER_OBJC_RETAIN_COUNT)
警告泄漏和不正确的参考计数管理。
违反'self =`超级初始化'规则(CLANG_ANALYZER_OBJC_SELF_INIT)
检查在Objective-C初始化方法中是否正确调用了超级初始化。
未使用的Ivars(CLANG_ANALYZER_OBJC_UNUSED_IVARS)
警告从未使用的私人ivars。
实验缓冲区溢出(CLANG_ANALYZER_SECURITY_BUFFER_OVERFLOW_EXPERIMENTAL)
检查潜在的缓冲区溢出。
用作循环计数器的浮点值(CLANG_ANALYZER_SECURITY_FLOATLOOPCOUNTER)
警告使用浮点值作为循环计数器(CERT:FLP30-C,FLP30-CPP)。
使用'getpw','gets'(缓冲区溢出)(CLANG_ANALYZER_SECURITY_INSECUREAPI_GETPW_GETS)
警告使用getpw并获取。这些函数是危险的,因为它们可能会触发缓冲区溢出。
使用'mktemp'或可预测'mktemps'(CLANG_ANALYZER_SECURITY_INSECUREAPI_MKSTEMP)
警告使用mktemp,它会产生可预测的临时文件。它被mktemps所淘汰。当mkstemp在格式字符串中传递少于6个X时发出警告。
使用'rand'函数(CLANG_ANALYZER_SECURITY_INSECUREAPI_RAND)
警告rand,random和相关函数的使用,这些函数产生可预测的随机数序列。改为使用arc4random。
使用“strcpy”和“strcat”(CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY)
警告使用strcpy和strcat函数,这可能导致缓冲区溢出。改用strlcpy或strlcat。
未检查的返回值(CLANG_ANALYZER_SECURITY_INSECUREAPI_UNCHECKEDRETURN)
警告必须始终检查返回值的敏感函数的使用。
使用'vfork'(CLANG_ANALYZER_SECURITY_INSECUREAPI_VFORK)
警告使用vfork函数,这本质上是不安全的。改用更安全的posix_spawn函数。
滥用钥匙串服务API(CLANG_ANALYZER_SECURITY_KEYCHAIN_API)
检查是否滥用了钥匙串服务API。
C ++语言方言(CLANG_CXX_LANGUAGE_STANDARD)
选择一个标准或非标准的C ++语言方言。选项包括:
C ++ 98:接受修改的ISO C ++ 1998,但不支持GNU扩展。 -std = C ++ 98
GNU ++ 98:接受ISO C ++ 1998修正版和GNU扩展。 -std = GNU ++ 98
C ++ 11:接受修改后的ISO C ++ 2011标准,但不接受GNU扩展。 -std = C ++ 11
GNU ++ 11:接受修改和GNU扩展的ISO C ++ 2011标准。 -std = GNU ++ 11
C ++ 14:接受修改后的ISO C ++ 2014标准,但不接受GNU扩展。 -std = C ++ 14
GNU ++ 14:接受带修正和GNU扩展的ISO C ++ 2014标准。 -std = GNU ++ 14
C ++ 17:通过修正接受ISO C ++ 2017标准,但不接受GNU扩展。 -std = C ++ 17
GNU ++ 17:接受修改和GNU扩展的ISO C ++ 2017标准。 -std = GNU ++ 17
编译器默认值:指示编译器使用其默认的C ++语言方言。这通常是最好的选择,除非你有特定的需求。 (目前相当于GNU ++ 98。)
C ++标准库(CLANG_CXX_LIBRARY)
选择要使用的C ++标准库的一个版本。
libstdc ++:与GCC和LLVM编译器一起工作的传统C ++标准库(默认)。
libc ++:高度优化的C ++标准库,仅与LLVM编译器一起工作,并且旨在支持新的C ++ 11功能。
调试信息级别(CLANG_DEBUG_INFORMATION_LEVEL)
切换调试符号启用时发出的调试信息量。这可能会影响生成的调试信息的大小,在某些情况下,对于大型项目(如使用LTO时)可能会有所影响。
启用代码覆盖支持(CLANG_ENABLE_CODE_COVERAGE)
使用代码覆盖检测来启用构建。这只有在构建启用了代码覆盖时才会使用,通常通过Xcode方案设置完成。
启用模块(C和Objective-C)(CLANG_ENABLE_MODULES)
启用系统API的模块。系统标题被导入为语义模块而不是原始标题。这可以加快构建和项目索引。
启用铿锵模块调试(CLANG_ENABLE_MODULE_DEBUGGING)
当启用此设置时,clang将使用clang模块和预编译头文件中提供的共享调试信息。这会导致更小的构建工件,更快的编译时间和更完整的调试信息。只有在构建带有用于分发的调试信息的静态库时,才应禁用此设置。
Objective-C自动引用计数(CLANG_ENABLE_OBJC_ARC)
编译引用计数的Objective-C代码(未启用垃圾回收时)使用自动引用计数。使用自动引用计数编译的代码与使用手动引用计数(例如,传统的保留和释放消息)或自动引用计数编译的其他代码(例如框架)兼容。目前使用此模式与编译代码以使用Objective-C垃圾收集不兼容。
手动保持释放中的弱引用(CLANG_ENABLE_OBJC_WEAK)
编译Objective-C代码以对使用手动保留发布(MRR)语义编译的代码启用弱引用。
隐式链接Objective-C运行时支持(CLANG_LINK_OBJC_RUNTIME)
当使用Objective-C代码链接目标时,隐式链接到Foundation(以及如果部署回到较早的操作系统)向后兼容性库,以允许在运行时支持本身不可用的操作系统上运行较新的语言功能。大多数使用Objective-C的目标都应该使用这种方法,尽管在极少数情况下目标应该选择退出这种行为。
添加属性注释(CLANG_MIGRATOR_ANNOTATIONS)
将属性注释添加到属性和方法。
推断方法结果类型的实例类型(CLANG_MIGRATOR_INSTANCE_TYPE)
推断方法结果类型的实例类型而不是id。
使用NS_ENUM / NS_OPTIONS宏(CLANG_MIGRATOR_NSENUM_MACROS)
对于枚举器使用NS_ENUM / NS_OPTIONS宏。
推断指定的初始化方法(CLANG_MIGRATOR_OBJC_DESIGNATED_INIT)
为指定的初始化方法推断NS_DESIGNATED_INITIALIZER。
ObjC文字(CLANG_MIGRATOR_OBJC_LITERALS)
启用迁移到现代的ObjC文字语法。
ObjC下标(CLANG_MIGRATOR_OBJC_SUBSCRIPTING)
启用迁移到现代ObjC下标语法。
推断属性的原子性(CLANG_MIGRATOR_PROPERTY_ATOMICITY)
选择推断的属性的原子性。
ObjC属性点语法(CLANG_MIGRATOR_PROPERTY_DOT_SYNTAX)
启用setter / getter消息到属性点语法的迁移
推断协议一致性(CLANG_MIGRATOR_PROTOCOL_CONFORMANCE)
从接口方法推断协议一致性。
只修改公共标题(CLANG_MIGRATOR_PUBLIC_HEADERS_ONLY)
只修改目标的公共标题。
推断只读属性(CLANG_MIGRATOR_READONLY_PROPERTY)
推断来自getter方法的只读属性。
推断读写属性(CLANG_MIGRATOR_READWRITE_PROPERTY)
从getter和setter方法推断读写属性。
自动链接框架(CLANG_MODULES_AUTOLINK)
自动链接使用#import或#include引用的SDK框架。此功能还需要支持模块。
优化配置文件(CLANG_OPTIMIZATION_PROFILE_FILE)
启用使用优化配置文件(CLANG_USE_OPTIMIZATION_PROFILE)时要使用的配置文件数据文件的路径。
“构建”的分析模式(CLANG_STATIC_ANALYZER_MODE)
“构建”操作期间静态分析器使用的深度。使用Deep可以锻炼分析仪的全部功能。使用浅为更快的分析。
“分析”的分析模式(CLANG_STATIC_ANALYZER_MODE_ON_ANALYZE_ACTION)
静态分析器在“分析”操作期间使用的深度。使用Deep可以锻炼分析仪的全部功能。使用浅为更快的分析。
启用额外整数检查(CLANG_UNDEFINED_BEHAVIOR_SANITIZER_INTEGER)
检查无符号整数溢出,除检查有符号整数溢出。
启用可空性注释检查(CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY)
检查函数调用,返回语句和赋值中违反可空性注释的情况。
使用优化配置文件(CLANG_USE_OPTIMIZATION_PROFILE)
启用此设置后,clang将在构建目标时使用为目标收集的优化配置文件。
超出范围的枚举赋值(CLANG_WARN_ASSIGN_ENUM)
警告分配整型常量来枚举超出枚举类型范围的值。
自动释放的块捕获(CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING)
警告隐式自动释放参数的块捕获。
隐式布尔转换(CLANG_WARN_BOOL_CONVERSION)
警告隐式转换为可疑的布尔值。例如,写if(foo)这个foo是名字的一个函数会触发一个警告。
可疑的逗号(CLANG_WARN_COMMA)
警告逗号运算符的可疑用途。
隐式常量转换(CLANG_WARN_CONSTANT_CONVERSION)
警告引起常数值更改的常量值的隐式转换,无论是通过精度损失,还是完全在其含义中。
在早期版本的C ++中使用C ++ 11扩展(CLANG_WARN_CXX0X_EXTENSIONS)
使用比C ++ 11更早的语言标准编译C ++代码时,警告使用C ++ 11扩展。
重写弃用的Objective-C方法(CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS)
警告如果一个Objective-C类要么不推荐使用的类的子类,要么重写一个被弃用的方法。
直接使用'isa'(CLANG_WARN_DIRECT_OBJC_ISA_USAGE)
警告直接访问Objective-C isa指针,而不是使用运行时API。
文档评论(CLANG_WARN_DOCUMENTATION_COMMENTS)
警告文档注释(doxygen-style)中的问题,如缺少或不正确的文档标签。
空循环体(CLANG_WARN_EMPTY_BODY)
警告怀疑空的循环体。
隐式枚举转换(CLANG_WARN_ENUM_CONVERSION)
警告不同类型的枚举值之间的隐式转换。例如,当使用错误的枚举标志作为函数或方法的参数时,这可能会遇到问题。
隐式浮点转换(CLANG_WARN_FLOAT_CONVERSION)
警告关于将浮点数转换为整数的隐式转换。
隐式签名转换(CLANG_WARN_IMPLICIT_SIGN_CONVERSION)
警告隐式整数转换会改变整数值的符号性。
无限递归(CLANG_WARN_INFINITE_RECURSION)
警告如果所有通过函数调用的路径本身。
整数转换为指针转换(CLANG_WARN_INT_CONVERSION)
警告指针和整数之间的隐式转换。例如,当使用NSNumber 和原始整数不正确地混合时,这可能会遇到问题。
隐式非文字空值转换(CLANG_WARN_NON_LITERAL_NULL_CONVERSION)
警告将评估为零的非文字表达式视为空指针。
可空值的使用不正确(CLANG_WARN_NULLABLE_TO_NONNULL_CONVERSION)
在不允许使用可空的表达式时发出警告,例如当作为_Nonnull参数传递时。
隐式所有权类型的输出参数(CLANG_WARN_OBJC_EXPLICIT_OWNERSHIP_TYPE)
警告有关Objective-C对象引用的隐式所有权类型作为输出参数。例如,声明一个带有NSObject 类型的参数将会产生一个警告,因为编译器会认为out参数的所有权类型是__autoreleasing。
隐式原子Objective-C属性(CLANG_WARN_OBJC_IMPLICIT_ATOMIC_PROPERTIES)
警告隐含原子的@property声明。
在块内隐式保留'self'(CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF)
警告关于块内自我隐含的保留,这可以创建一个保留周期。
隐式Objective-C文字转换(CLANG_WARN_OBJC_LITERAL_CONVERSION)
警告有关从Objective-C文字到不兼容类型值的隐式转换。
隐式合成属性(CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS)
从Xcode 4.4开始,Apple LLVM Compiler将隐式合成不使用@synthesize明确合成的属性。即使该属性仍然是合成的,该设置会警告这种隐含的行为。这实质上是一个向后兼容性警告,或者是希望继续显式使用@synthesize的人。
反复使用__weak引用(CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK)
警告重复使用弱参考,而不要将弱参考分配给强参考。这往往是一个竞争条件的症状,弱访问可以在访问之间变成零,导致意想不到的行为。分配临时的强引用可确保对象在相关访问期间保持活动状态。
无意的根类(CLANG_WARN_OBJC_ROOT_CLASS)
警告无意中不要子类的根类(如NSObject)的类。
基于范围的循环(CLANG_WARN_RANGE_LOOP_ANALYSIS)
警告基于范围的for循环。
严格原型(CLANG_WARN_STRICT_PROTOTYPES)
警告关于非原型声明。
可疑隐式转换(CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION)
警告可能会丢失信息或以其他方式可疑的各种隐式转换。
可疑移动(CLANG_WARN_SUSPICIOUS_MOVE)
警告std :: move的可疑用途。
无人值守的可用性(CLANG_WARN_UNGUARDED_AVAILABILITY)
如果没有“if(@available(...))”警卫,则使用比部署目标更新的API警告。
无法访问的代码(CLANG_WARN_UNREACHABLE_CODE)
警告可能无法访问的代码。
使用__bridge在ARC之外投射(CLANG_WARN__ARC_BRIDGE_CAST_NONARC)
警告在不使用ARC时使用__bridge强制转换,它们不起作用。
重复方法定义(CLANG_WARN__DUPLICATE_METHOD_MATCH)
警告在相同的@interface中多次声明相同的方法。
退出时间C ++析构函数(CLANG_WARN__EXIT_TIME_DESTRUCTORS)
警告应用程序终止时调用的C ++对象的析构函数。
启用附加向量扩展(CLANG_X86_VECTOR_INSTRUCTIONS)
允许使用扩展向量指令。仅在定位Intel体系结构时使用。
代码签名授权(CODE_SIGN_ENTITLEMENTS)
指定代码签名权利的文件的路径。
代码签名标识(CODE_SIGN_IDENTITY)
您的钥匙串路径中的钥匙串中的有效代码签名证书的名称(也称为公用名称)。缺失或无效的证书将导致构建错误。
代码签名样式(CODE_SIGN_STYLE)
此设置指定用于获取和查找签名资产的方法。选择自动让Xcode自动创建并更新配置文件,应用程序ID和证书。选择手动在开发者网站上自行创建和更新这些。
结合高分辨率图稿(COMBINE_HIDPI_IMAGES)
将不同分辨率的图像文件合并到一个多页TIFF文件中,该文件在macOS 10.7及更高版本中兼容HiDPI。只有在相同的目录和相同的基本名称和扩展名的图像文件相结合。文件名必须符合HiDPI中使用的命名约定。
启用建立索引时的功能(COMPILER_INDEX_STORE_ENABLE)
控制编译器是否应该在构建时发出索引数据。
压缩PNG文件(COMPRESS_PNG_FILES)
如果启用,PNG资源文件在复制时会被压缩。
组态
标识目标用于生成产品的生成配置,例如Debug或Release。
每个配置构建产品路径(CONFIGURATION_BUILD_DIR)
构建产品将在构建期间放置给定配置的基本路径。默认情况下,它被设置为$(BUILD_DIR)/ $(CONFIGURATION)。
每配置中间生成文件路径(CONFIGURATION_TEMP_DIR)
在给定配置的构建过程中将放置中间体的基本路径。默认情况下,它被设置为$(PROJECT_TEMP_DIR)/ $(CONFIGURATION)。
CONTENTS_FOLDER_PATH
指定包含产品文件的生成包中的目录。
保留HFS数据(COPYING_PRESERVES_HFS_DATA)
导致资源的复制以保留资源分支和Finder信息。
在产品标题上运行unifdef(COPY_HEADERS_RUN_UNIFDEF)
如果启用,当复制到产品时,标题将通过unifdef(1)工具运行。
产品标题的Unifdef标志(COPY_HEADERS_UNIFDEF_FLAGS)
指定在调用该工具复制标题时要传递给unifdef(1)的标志。除非启用在产品标题上运行unifdef(COPY_HEADERS_RUN_UNIFDEF),否则此设置不起作用。
在复制期间去除调试符号(COPY_PHASE_STRIP)
指定是否应删除在构建过程中复制的二进制文件(如“复制包资源”或“复制文件”构建阶段)的调试符号。它不会导致目标的链接产品被剥离使用Strip Strip Product(STRIP_INSTALLED_PRODUCT)。
CoreML模型类生成语言(COREML_CODEGEN_LANGUAGE)
用于生成的CoreML模型类的源代码语言。默认情况下,“自动”将分析您的项目,以确定正确的语言。调整此设置以显式选择“Swift”或“Objective-C”,或者选择“None”以禁用模型类生成。
CoreML生成的模型继承NSObject(COREML_CODEGEN_SWIFT_GLOBAL_MODULE)
生成标记为@objc并且是NSObject后代的Swift模型类,以便在Objective-C中可访问和使用。如果“CoreML模型类生成语言”设置为“Objective-C”,则此设置无效。
Cpp其他预处理器标志(CPP_OTHER_PREPROCESSOR_FLAGS)
其他标志在使用独立C预处理器规则时传递给C预处理器。
Cpp前缀文件(CPP_PREFIX_HEADER)
在使用独立C预处理器规则进行预处理时隐式包含给定的文件。给定的路径应该是项目相对路径或绝对路径。
Cpp预处理器定义(CPP_PREPROCESSOR_DEFINITIONS)
空格分隔的foo或foo = bar形式的预处理宏列表。这些宏在使用独立C预处理器规则进行预处理时使用。
在二进制文件中创建Info.plist节(CREATE_INFOPLIST_SECTION_IN_BINARY)
启用此设置将在产品的链接二进制文件中创建一个包含目标的已处理Info.plist文件的部分。该设置仅适用于命令行工具目标。
CURRENT_ARCH
正在处理的活动体系结构的名称。
当前项目版本(CURRENT_PROJECT_VERSION)
该设置定义了项目的当前版本。该值必须是整数或浮点数,例如57或365.8。
CURRENT_VARIANT
正在处理的活动变体的名称。
死代码剥离(DEAD_CODE_STRIPPING)
激活此设置会导致通过cc(1)将-dead_strip标志传递给ld(1)以打开死代码剥离。
调试信息格式(DEBUG_INFORMATION_FORMAT)
要生成的调试信息的类型。
DWARF:对象文件和链接的产品将使用DWARF作为调试信息格式。矮人
带有dSYM文件的DWARF:对象文件和链接的产品将使用DWARF作为调试信息格式,Xcode也将生成一个dSYM文件,其中包含来自单个对象文件的调试信息(除了不需要dSYM文件并且不会创建对于静态库或对象文件产品)。侏儒与 - DSYM
定义模块(DEFINES_MODULE)
如果启用,产品将被视为定义自己的模块。这可以在适当时自动生成LLVM模块映射文件,并允许将产品作为模块导入。
部署位置(DEPLOYMENT_LOCATION)
如果启用,则除已构建的产品文件夹之外,已构建的产品将被放置在其已安装的位置。
部署后处理(DEPLOYMENT_POSTPROCESSING)
如果启用,则表示应删除二进制文件,并将文件模式,所有者和组信息设置为标准值。
DERIVED_FILE_DIR
标识派生源文件(如由lex和yacc生成的那些文件)放置到的目录。
开发团队(DEVELOPMENT_TEAM)
用于签署证书和配置文件的开发团队的团队ID。
输出日志级别(DISTILL_LOGLEVEL)
该选项控制提取工具的输出。
蒸馏模式(DISTILL_MODE)
该选项控制运行提取工具的模式 - 可以完全重新生成输出,也可以递增编辑现有的输出。
DOCUMENTATION_FOLDER_PATH
标识包含软件包文档文件的目录。
安装构建产品位置(DSTROOT)
执行安装构建时,所有产品都将被植根的路径。例如,要将产品安装在系统上,请将此路径设置为/。默认为/tmp/$(PROJECT_NAME).dst,以防止测试安装构建意外覆盖最终安装路径中的有效数据和所需数据。
通常,此路径不是针对每个目标设置的,而是在执行xcodebuild安装时作为命令行上的选项提供的。在特殊情况下,它也可能被设置为构建配置。
其他DTrace标志(DTRACE_OTHER_FLAGS)
空格分隔的附加标志列表传递给dtrace编译器。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未为特定的dtrace标志提供UI,请使用此设置。
兼容版本(DYLIB_COMPATIBILITY_VERSION)
确定生成的库,包或框架二进制文件的兼容版本。有关分配动态库的版本号的详细信息,请参阅动态库编程主题中的动态库设计指南。
当前库版本(DYLIB_CURRENT_VERSION)
该设置定义了项目构建的任何框架的当前版本。与当前项目版本(CURRENT_PROJECT_VERSION)一样,该值必须是整数或浮点数,例如57或365.8。默认情况下,它被设置为$(CURRENT_PROJECT_VERSION)。有关分配动态库的版本号的详细信息,请参阅动态库编程主题中的动态库设计指南。
动态库安装名称库(DYLIB_INSTALL_NAME_BASE)
在动态库中设置内部安装路径的基本值(LC_ID_DYLIB)。这将与EXECUTABLE_PATH结合形成完整的安装路径。直接设置动态库安装名称(LD_DYLIB_INSTALL_NAME)将覆盖此设置。此设置默认为目标的安装目录(INSTALL_PATH)。构建除动态库之外的任何产品时都会被忽略。
在资源包中嵌入资源包(EMBED_ASSET_PACKS_IN_PRODUCT_BUNDLE)
将所有构建的资产包嵌入产品包中。由于这消除了按需资源功能的性能优势,因此仅在使用资产包服务器不切实际时才用于测试目的。
启用位码(ENABLE_BITCODE)
激活此设置表示目标或项目应在编译期间为支持它的平台和体系结构生成位代码。对于存档构建,将在链接的二进制文件中生成位码,以提交给App Store。对于其他版本,编译器和链接器将检查代码是否符合位代码生成的要求,但不会生成实际的位代码。
ENABLE_HEADER_DEPENDENCIES
指定是否自动跟踪包含的头文件的依赖关系。
启用增量提取(ENABLE_INCREMENTAL_DISTILL)
在资产目录编译器中启用增量提取选项。该功能是实验性的,只能谨慎使用。
启用基础声明(ENABLE_NS_ASSERTIONS)
控制NSAssert提供的断言逻辑是包含在预处理的源代码中,还是在预处理过程中被忽略。禁用断言可以提高代码的性能。
仅生成活动资源(ENABLE_ONLY_ACTIVE_RESOURCES)
构建单个设备时省略不适用的资源。例如,为具有Retina显示器的设备构建时,排除1x资源。
启用按需资源(ENABLE_ON_DEMAND_RESOURCES)
如果启用,则标记的资产文件和资产目录条目将根据标签的组合内置到资产包中。未标记的资源正常处理。
启用严格检查objc_msgSend调用(ENABLE_STRICT_OBJC_MSGSEND)
控制在调用objc_msgSend调用之前是否必须将其转换为适当的函数指针类型。
启用可测试性(ENABLE_TESTABILITY)
激活此设置时,产品将使用适合运行自动化测试的选项构建,例如使测试可访问专用接口。这可能会导致测试运行速度比没有启用可测试性时慢。
在递归搜索中排除的子目录(EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES)
这是执行递归搜索时要排除的文件或目录名称的fnmatch()样式模式列表。默认情况下,它被设置为 .nib .lproj .framework .gch .xcode().DS_Store CVS .svn .git .hg。通常,如果您重写此值,则应通过$(继承)宏包含默认值。
排除的源文件名称(EXCLUDED_SOURCE_FILE_NAMES)
模式列表(由fnmatch(3)定义)指定源文件的名称,以在处理源构建阶段时显式排除(另请参阅INCLUDED_SOURCE_FILE_NAMES)。这个设置可以用来定义复杂的过滤器,为了响应其他的构建设置,这个阶段的文件应该被构建;例如,。$(CURRENT_ARCH).c的值可用于基于正在构建的体系结构排除特定文件。
EXECUTABLES_FOLDER_PATH
标识包含其他二进制文件的目录。
可执行扩展(EXECUTABLE_EXTENSION)
这是用于由目标生成的可执行产品的扩展,它具有基于产品类型的默认值。
EXECUTABLE_FOLDER_PATH
标识包含目标版本二进制文件的目录。
EXECUTABLE_NAME
指定目标产生的二进制文件的名称。
EXECUTABLE_PATH
指定目标在其包中生成的二进制文件的路径。
可执行前缀(EXECUTABLE_PREFIX)
用于由目标生成的可执行产品的前缀,该前缀具有基于产品类型的默认值。
EXECUTABLE_SUFFIX
指定二进制文件名的后缀,包括将扩展名与其他名称分开的字符。
导出的符号文件(EXPORTED_SYMBOLS_FILE)
这是一个文件的项目相对路径,列出了要导出的符号。有关导出符号的详细信息,请参阅ld -exported_symbols_list。
FRAMEWORKS_FOLDER_PATH
指定包含产品嵌入式框架的目录。
框架搜索路径(FRAMEWORK_SEARCH_PATHS)
这是包含编译器在编译C,Objective-C,C ++或Objective-C ++时为包含或导入的头文件搜索的框架的文件夹路径列表,以及由产品使用的框架链接器。路径由空格分隔,所以任何带有空格的路径都必须正确引用。
框架版本(FRAMEWORK_VERSION)
通过使内容位于具有指向当前版本及其内容的链接的版本文件夹的子文件夹中来对版本化框架包。
'char'类型是无符号的(GCC_CHAR_IS_UNSIGNED_CHAR)
启用此设置会导致char默认为无符号,禁用它会导致char被默认签名。
CodeWarrior / MS样式内联汇编(GCC_CW_ASM_SYNTAX)
除了标准的GCC语法之外,还可以为内联汇编代码启用CodeWarrior / Microsoft语法。
C语言方言(GCC_C_LANGUAGE_STANDARD)
选择一种标准或非标准的C语言方言。
ANSI C:接受ISO C90和ISO C ++,关闭不兼容的GNU扩展。 -ansi不兼容的GNU扩展包括asm,inline和typeof关键字(但不包括相同的__asm__,__inline__和__typeof__表单)以及注释的语法。该设置还可以启用三字母符号。
C89:接受ISO C90(1990),但不接受GNU扩展。 -std = C89
GNU89:接受ISO C90和GNU扩展。 -std = gnu89
C99:接受ISO C99(1999),但不接受GNU扩展。 -std = C99
GNU99:接受ISO C99和GNU扩展。 -std = gnu99
C11:接受ISO C11(2011),但不支持GNU扩展。 -std = C11
GNU11:接受ISO C11和GNU扩展。 -std = gnu11
编译器默认值:指示编译器使用其默认的C语言方言。这通常是最好的选择,除非你有特定的需求。 (目前相当于GNU99。)
生成位置相关代码(GCC_DYNAMIC_NO_PIC)
更快的函数调用应用程序。不适合共享库,它们需要位置无关。
允许'asm','inline','typeof'(GCC_ENABLE_ASM_KEYWORD)
控制asm,inline和typeof是否被当作关键字或它们是否可以用作标识符。
识别内建函数(GCC_ENABLE_BUILTIN_FUNCTIONS)
控制是否识别不以__builtin_开头的内建函数。
GCC通常会生成特殊的代码来更有效地处理某些内置函数;例如,对alloca的调用可能会成为直接调整堆栈的单个指令,并且调用memcpy可能会成为内联复制循环。结果代码通常既小又快,但由于函数调用不再出现,所以不能在这些调用中设置断点,也不能通过链接不同的库来更改函数的行为。另外,当一个函数被识别为内建函数时,GCC可以使用关于该函数的信息来警告调用该函数的问题,或者生成更高效的代码,即使结果代码仍然包含对该函数的调用。例如,当printf被创建时,给出的警告是用-Wformat对printf进行错误调用,并且strlen已知不会修改全局内存。
启用C ++异常(GCC_ENABLE_CPP_EXCEPTIONS)
启用C ++异常处理。生成传播异常所需的额外代码。对于某些目标,这意味着GCC将为所有函数生成帧展开信息,这会产生显着的数据大小开销,尽管它不影响执行。如果你没有指定这个选项,GCC将默认启用C ++等通常需要异常处理的语言,并禁用C语言等通常不需要的语言。但是,编译需要与使用C ++编写的异常处理程序正确互操作的C代码时,可能需要启用此选项
启用C ++运行时类型(GCC_ENABLE_CPP_RTTI)
使用虚拟函数生成关于每个类的信息,供C ++运行时类型标识特性(dynamic_cast和typeid)使用。如果你不使用这些语言的部分,你可以使用这个标志来节省一些空间。请注意,异常处理使用相同的信息,但会根据需要生成它。
启用例外(GCC_ENABLE_EXCEPTIONS)
启用异常处理。生成传播异常所需的额外代码。对于某些目标,这意味着GCC将为所有函数生成帧展开信息,这会产生显着的数据大小开销,尽管它不影响执行。如果你没有指定这个选项,GCC将默认为C ++和Objective-C这样的语言启用它,这些语言通常需要异常处理,并且对于像C这样通常不需要它的语言禁用它。但是,编译需要与其他语言编写的异常处理程序正确协作的C代码时,可能需要启用此选项。如果您正在编译不使用异常处理的较旧程序,也可能希望禁用此选项。
生成浮点库调用(GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS)
生成包含库调用浮点的输出。
内核开发模式(GCC_ENABLE_KERNEL_DEVELOPMENT)
激活此设置将启用内核开发模式。
启用Objective-C异常(GCC_ENABLE_OBJC_EXCEPTIONS)
这个设置启用@ try / @ catch / @ throw语法来处理Objective-C代码中的异常。只适用于Objective-C。
识别Pascal字符串(GCC_ENABLE_PASCAL_STRINGS)
识别并构建Pascal风格的字符串文字。不鼓励在新代码中使用它。
Pascal字符串文字采用“\ pstring”的形式。特殊转义序列\ p表示字符串的Pascal长度字节,并且在编译时将被替换为随后的字符数。 \ p可能只出现在字符串字面的开头,可能不会出现在宽字符串中或作为一个整型常量。
启用SSE3扩展(GCC_ENABLE_SSE3_EXTENSIONS)
指定二进制文件是否使用提供对IA-32体系结构的SSE3扩展的访问的内置函数。
启用SSE4.1扩展(GCC_ENABLE_SSE41_EXTENSIONS)
指定二进制文件是否使用提供对IA-32架构的SSE4.1扩展的访问的内置函数。
启用SSE4.2扩展(GCC_ENABLE_SSE42_EXTENSIONS)
指定二进制文件是否使用提供对IA-32体系结构的SSE4.2扩展的访问的内建函数。
启用三字母(GCC_ENABLE_TRIGRAPHS)
控制源代码中是否允许三元符号。
放宽IEEE合规性(GCC_FAST_MATH)
启用一些不符合IEEE754的浮点优化,但通常工作。需要严格符合IEEE标准的程序可能无法使用此选项。
生成调试符号(GCC_GENERATE_DEBUGGING_SYMBOLS)
启用或禁用生成调试符号。当启用调试符号时,可以通过调试信息格式(DEBUG_INFORMATION_FORMAT)设置来控制详细程度。
生成传统的测试覆盖率文件(GCC_GENERATE_TEST_COVERAGE_FILES)
激活此设置会生成一个注释文件,gcov代码覆盖实用程序可用于显示程序覆盖。
增加预编译头文件的共享(GCC_INCREASE_PRECOMPILED_HEADER_SHARING)
启用此选项可以增加在共享相同前缀头文件和预编译头文件目标的目标之间共享预编译头文件。
Xcode通过生成一个基于命令行选项的哈希值来编译用于创建PCH的编译器,从而区分预编译头(PCH)文件。启用此选项将从该散列中排除某些编译器选项。目前这个选项将排除哈希中的搜索路径选项(-I,-iquote,-isystem,-F,-L)。
如果两个目标使用相同的前缀头,但具有不同的包含路径,使得前缀头在预编译时包含不同的文件,则启用增加的PCH文件共享会带来一些风险 - 但是,由于一个目标将使用PCH是使用其他目标包含的文件构建的。在这种情况下,必须关闭此选项才能执行正确性。
内联方法隐藏(GCC_INLINES_ARE_PRIVATE_EXTERN)
启用时,内联方法的外联副本被声明为私有外部。
将源代码编译为(GCC_INPUT_FILETYPE)
指定是根据文件类型编译每个源文件还是将目标文件中的所有源文件视为具有特定语言。
仪器程序流程(GCC_INSTRUMENT_PROGRAM_FLOW_ARCS)
激活此设置表示应添加代码,以便检测程序流弧线。
启用与共享库的链接(GCC_LINK_WITH_DYNAMIC_LIBRARIES)
启用此选项可以与共享库链接。这是大多数产品类型的默认设置。
没有公共块(GCC_NO_COMMON_BLOCKS)
在C中,甚至在对象文件的数据部分分配未初始化的全局变量,而不是将它们生成为通用块。这样做的结果是,如果在两个不同的编译中声明了相同的变量(不带extern),则在链接它们时会出现错误。
优化级别(GCC_OPTIMIZATION_LEVEL)
指定生成的代码针对速度和二进制大小优化的程度。
无:不要优化。 -O0
通过这个设置,编译器的目标是降低编译成本,并使调试产生预期的结果。语句是独立的 - 如果您使用语句之间的断点停止程序,则可以为任何变量分配一个新值,或者将程序计数器更改为函数中的任何其他语句,并获得您期望从源代码得到的结果。
快速:优化编译需要更多的时间,并为大功能提供更多的内存。 -O1
使用此设置,编译器会尝试减少代码大小和执行时间,而不执行需要大量编译时间的任何优化。在Apple的编译器中,优化时默认禁用严格别名,块重新排序和块间调度。
更快:编译器执行几乎所有支持的优化,不涉及空间速度折衷。 -02
使用此设置,编译器不执行循环展开或函数内联,或者重命名寄存器。与快速设置相比,此设置会增加编译时间和生成的代码的性能。
最快:打开由“更快”设置指定的所有优化,并打开函数内联和注册重命名选项。此设置可能会导致更大的二进制文件。 -O3
最快,最小:优化大小。此设置启用通常不会增加代码大小的所有更快的优化。它还执行进一步的优化,旨在减少代码大小。 -os
最快的,积极的优化:这个设置启用最快,但也可以进行积极的优化,可能违反严格的标准遵从性,但应该良好的行为代码。 -Ofast
预编译前缀头(GCC_PRECOMPILE_PREFIX_HEADER)
为前缀头生成一个预编译的头文件,这会减少整个生成时间。
如果前缀头文件或其包含的任何文件的内容很少发生变化,则预编译前缀头文件将最有效。如果前缀头文件或其中包含的任何文件的内容频繁更改,则可能会对总体构建时间产生负面影响。
前缀头(GCC_PREFIX_HEADER)
隐式包含指定的标题。给定的路径应该是项目相对路径或绝对路径。
预处理器宏(GCC_PREPROCESSOR_DEFINITIONS)
空格分隔的foo或foo = bar形式的预处理宏列表。
预编译头中未使用预处理器宏(GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS)
空格分隔的foo或foo = bar形式的预处理宏列表。预编译前缀头文件时不使用这些宏。
使字符串只读(GCC_REUSE_STRINGS)
重用字符串文字。
短枚举常量(GCC_SHORT_ENUMS)
使枚举的大小与可能值的范围一样大。
此设置生成的代码可能不与未使用此设置生成的代码或macOS框架进行二进制兼容。
强制实施严格别名(GCC_STRICT_ALIASING)
通过更积极地假设指针是否可以指向与其他指针相同的对象来优化代码。使用指针很多的程序可能会受益于此,但不严格遵循ISO C有关可以访问对象的类型的规则的程序可能会出现意外情况。
默认隐藏的符号(GCC_SYMBOLS_PRIVATE_EXTERN)
启用后,除非明确标记为使用代码中的__attribute __((visibility(“default”)))导出,否则所有符号都声明为private Extern。如果未启用,除非明确标记为私有外部,否则所有符号都将被导出。请参阅“在C ++运行时环境编程指南中控制符号可见性”。
静态线程安全(GCC_THREADSAFE_STATICS)
发出额外的代码以使用C ++ ABI中指定的例程来进行本地静态的线程安全初始化。您可以禁用此选项以在不需要线程安全的代码中稍微减少代码大小。
将缺少函数原型视为错误(GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS)
导致有关缺少函数原型的警告被视为错误。只适用于C和Objective-C。
将不兼容的指针类型警告视为错误(GCC_TREAT_INCOMPATIBLE_POINTER_TYPE_WARNINGS_AS_ERRORS)
启用此选项会导致有关不兼容指针类型的警告被视为错误。
将警告视为错误(GCC_TREAT_WARNINGS_AS_ERRORS)
启用此选项会导致所有警告被视为错误。
展开循环(GCC_UNROLL_LOOPS)
展开循环。展开使得代码更大,但是可以通过减少执行的分支数量来使其更快。
使用标准系统标题目录搜索(GCC_USE_STANDARD_INCLUDE_SEARCHING)
控制是否搜索标准系统目录中的头文件。禁用时,只搜索使用-I选项指定的目录(以及当前文件的目录,如果适用)
编译器为C / C ++ / Objective-C(GCC_VERSION)
用于C,C ++和Objective-C的编译器。
隐式转换为32位类型(GCC_WARN_64_TO_32_BIT_CONVERSION)
警告如果一个值从64位类型隐式转换为32位类型。这是由-Wconversion提供的警告的子集。
弃用函数(GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS)
警告不要使用已弃用的函数,变量和类型(如不建议使用的属性所示)。
未定义使用offsetof宏(GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO)
取消选中此设置将禁止将offsetof宏应用于非POD类型的警告。根据1998年的ISO C ++标准,将offsetof应用于非POD类型是未定义的。但是,在现有的C ++实现中,即使应用于某些非POD类型的类型,offsetof通常也会提供有意义的结果,例如仅通过具有构造函数而不能成为POD类型的简单结构。此标志适用于意识到他们正在编写非易用代码并且故意选择忽略有关警告的用户。
在未来版本的C ++标准中,可以放宽对offsetof的限制。
结构初始化器中缺少字段(GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS)
如果结构的初始化程序缺少某些字段,则发出警告。例如,下面的代码会导致这样的警告,因为x.h隐含为零:
struct s {int f,g,h; };
struct s x = {3,4};
该选项不会提示有关指定的初始值设定项,所以下列修改不会触发警告:
struct s {int f,g,h; };
struct s x = {.f = 3,.g = 4};
文件结尾缺少换行符(GCC_WARN_ABOUT_MISSING_NEWLINE)
当源文件不以换行符结束时发出警告。
缺少函数原型(GCC_WARN_ABOUT_MISSING_PROTOTYPES)
导致有关丢失原型的警告消失。
指针标志比较(GCC_WARN_ABOUT_POINTER_SIGNEDNESS)
当通过参数传递的指针或分配给变量的符号不同时发出警告。
不匹配的返回类型(GCC_WARN_ABOUT_RETURN_TYPE)
当具有已定义返回类型(非void)的函数包含不带返回值的返回语句时,会导致发出警告。当定义一个函数而不指定返回类型时也会发出警告。
不完整的Objective-C协议(GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL)
如果协议所要求的方法没有在采用它的类中实现,则会发出警告。只适用于Objective-C。
检查开关语句(GCC_WARN_CHECK_SWITCH_STATEMENTS)
每当switch语句具有枚举类型的索引并且缺少该枚举的一个或多个指定代码的情况下发出警告。默认标签的存在可防止此警告。使用此选项时,枚举范围外的枚举标签也会引发警告。
四个字符文字(GCC_WARN_FOUR_CHARACTER_CONSTANTS)
警告四字符文字(例如,macOS风格的OSType:'APPL')。
重载虚拟函数(GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS)
当函数声明隐藏基类的虚函数时发出警告。
例如,在以下示例中,f()的A类版本隐藏在B中。
struct A {
virtual void f();
};
struct B:public A {
void f(int);
};
结果,下面的代码将无法编译。
B b;
B-&GT; F();
此设置仅适用于C ++和Objective-C ++源代码。
禁止所有警告(GCC_WARN_INHIBIT_ALL_WARNINGS)
禁止所有警告消息。
初始化程序未完全包含(GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED)
如果聚合或联合初始值设定项没有完全包围,则发出警告。在以下示例中,a的初始化程序未完全包围,但b的初始化程序完全包围。
int a`2````` {0,1,2,3};
int b`2``2` = {{0,1},{2,3}};
缺少大括号和圆括号(GCC_WARN_MISSING_PARENTHESES)
如果在某些上下文中省略了括号,例如在预期有真值的上下文中存在赋值,或者当嵌套的运算符的优先级引起混淆时,会发出警告。此外,还要警告有关可能会混淆其他分支属于哪个语句的构造。例如:
{
如果一个)
如果(b)
foo();
其他
bar();
}
在C中,其他每一个分支都属于最内层的if语句,在上例中是if(b)。这通常不是程序员期望的,正如上例中使用的缩进所示。这种构建设置会导致海湾合作委员会在发生混淆的可能性时发出警告。为了消除警告,在最里面的if语句周围添加显式大括号,这样else就不可能属于封闭if。例如:
{
如果一个)
{
如果(b)
foo();
其他
bar();
}
}
非虚拟析构函数(GCC_WARN_NON_VIRTUAL_DESTRUCTOR)
当一个类声明一个非虚拟的析构函数时,该函数可能应该是虚拟的,因为它看起来像该类将被多形地使用。这只适用于C ++或Objective-C ++源代码。
迂腐警告(GCC_WARN_PEDANTIC)
发布严格的ISO C和ISO C ++所要求的所有警告;拒绝所有使用禁止扩展的程序,以及其他一些不遵循ISO C和ISO C ++的程序。对于ISO C,遵循由所使用的任何-std选项指定的ISO C标准版本。
隐藏的局部变量(GCC_WARN_SHADOW)
如果局部变量影响另一个局部变量,参数或全局变量,或每当内建函数被遮蔽,都会发出警告。
签名比较(GCC_WARN_SIGN_COMPARE)
当签名值转换为无符号值时,有符号和无符号值之间的比较可能会产生不正确的结果时发出警告。
严格的选择器匹配(GCC_WARN_STRICT_SELECTOR_MATCH)
如果在尝试使用此选择器将消息发送到类型为id或Class的接收方时发现给定选择器有多个具有不同参数和/或返回类型的方法,则警告。当此设置被禁用时,如果发现任何差异局限于共享相同大小和对齐的类型,编译器将忽略此类警告。
Typecheck调用printf / scanf(GCC_WARN_TYPECHECK_CALLS_TO_PRINTF)
检查对printf和scanf的调用,以确保提供的参数的类型与指定的格式字符串相匹配,并且格式字符串中指定的转换有意义。
未声明的选择器(GCC_WARN_UNDECLARED_SELECTOR)
如果发现引用未声明的选择器的@selector(...)表达式,则会发出警告。如果在@selector(...)表达式之前没有声明具有该名称的方法,则显式地在@interface或@protocol声明中或隐式地在@implementation节中声明选择器未声明。只要找到@selector(...)表达式,此选项就会执行检查,而-Wselector只在编译的最后阶段执行检查。这也强制了编码风格的约定,方法和选择器必须在使用之前声明。
未初始化的变量(GCC_WARN_UNINITIALIZED_AUTOS)
如果某个变量可能被setjmp调用破坏,或者在没有事先初始化的情况下使用自动变量,则发出警告。
编译器可能不会检测所有初始化自动变量的情况,也可能检测到可能导致在初始化之前使用的所有使用模式。您可以在正常的未初始化值检查或更积极(保守)检查之间切换,这会发现更多问题,但检查更严格。
未知Pragma(GCC_WARN_UNKNOWN_PRAGMAS)
遇到GCC无法理解的#pragma指令时发出警告。如果使用此命令行选项,则甚至会为系统头文件中的未知编译指示发出警告。如果警告仅由-Wall命令行选项启用,情况并非如此。
未使用的函数(GCC_WARN_UNUSED_FUNCTION)
每当声明一个静态函数但未定义或未使用非内联静态函数时发出警告。
未使用的标签(GCC_WARN_UNUSED_LABEL)
只要标签被声明但未被使用,就会发出警告。
未使用的参数(GCC_WARN_UNUSED_PARAMETER)
除了声明之外,只要函数参数没有被使用,就会发出警告。
未使用的值(GCC_WARN_UNUSED_VALUE)
当语句计算明确未使用的结果时发出警告。
未使用的变量(GCC_WARN_UNUSED_VARIABLE)
只要局部变量或非常量静态变量在声明之外未使用,就会发出警告。
执行单对象预链接(GENERATE_MASTER_OBJECT_FILE)
激活此设置将使目标生成的目标文件使用ld -r链接到单个目标文件中,然后该目标文件将链接到最终产品中。在构建静态库之前,强制链接器解析符号并将对象文件链接到单个模块中是非常有用的。另外,可以将一组单独的链接标志应用于预链接,以允许对例如导出的符号进行附加控制。
强制包信息生成(GENERATE_PKGINFO_FILE)
即使此文件不是预期的,也会强制将PkgInfo文件写入包装的产品。
生成分析代码(GENERATE_PROFILING_CODE)
激活此设置将导致编译器和链接器生成分析代码。例如,GCC将生成适用于gprof(1)的代码。
启用基于文本的存根生成(GENERATE_TEXT_BASED_STUBS)
为动态库和框架生成基于文本的存根。
HEADERMAP_INCLUDES_FLAT_ENTRIES_FOR_TARGET_BEING_BUILT
指定标题映射是否包含正在构建的目标中每个标题的名称/路径条目。
HEADERMAP_INCLUDES_FRAMEWORK_ENTRIES_FOR_ALL_PRODUCT_TYPES
指定标题映射是否包含正在构建的目标中每个标题的框架名称/路径条目,包括不构建框架的目标。
HEADERMAP_INCLUDES_PROJECT_HEADERS
指定标题图是否包含项目中每个标题的名称/路径条目,而不管标题的目标成员身份。
标题搜索路径(HEADER_SEARCH_PATHS)
这是在编译C,Objective-C,C ++或Objective-C ++时由编译器搜索包含或导入的头文件的文件夹的路径列表。路径由空白分隔,所以任何带有空格的路径都需要正确引用。
自动激活自定义字体(IBC_COMPILER_AUTO_ACTIVATE_CUSTOM_FONTS)
指示XIB编译器将自定义字体添加到应用程序的Info.plist,这将导致在启动应用程序时激活字体。
显示错误(IBC_ERRORS)
显示编译XIB文件时遇到的错误。
压扁编译的XIB文件(IBC_FLATTEN_NIBS)
如果启用,将XIB文件编译成扁平(非包装)NIB文件。展平后,生成的NIB更加紧凑,但不再能被Interface Builder编辑。当禁用此选项时,生成的NIB文件在Interface Builder中保持可编辑状态。
默认模块(IBC_MODULE)
为不带特定模块名称的Swift类定义模块名称。
显示通知(IBC_NOTICES)
在编译XIB文件期间显示遇到的通知。
其他Interface Builder编译器标志(IBC_OTHER_FLAGS)
要传递给Interface Builder编译器的附加标志的列表。如果Xcode尚未为特定的Interface Builder编译器标志提供UI,请使用此设置。
覆盖插件和框架目录(IBC_OVERRIDING_PLUGINS_AND_FRAMEWORKS_DIR)
指示Interface Builder从指定的目录加载框架和Interface Builder插件。将此值设置为$(BUILD_DIR)/ $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)将确保Interface Builder将从当前构建配置的构建产品目录加载框架和插件。
插件(IBC_PLUGINS)
Interface Builder插件在编译XIB文件时加载的路径列表。
插件搜索路径(IBC_PLUGIN_SEARCH_PATHS)
在编译XIB文件时要加载的Interface Builder插件的路径列表。
去除NIB文件(IBC_STRIP_NIBS)
剥离Interface Builder NIB以减小其部署的大小。生成的NIB更加紧凑,但不再可由Interface Builder编辑。当禁用此选项时,生成的NIB文件仍可由Interface Builder编辑。
显示警告(IBC_WARNINGS)
在编译XIB文件时显示遇到的警告。
自动激活自定义字体(IBSC_COMPILER_AUTO_ACTIVATE_CUSTOM_FONTS)
指示Storyboard编译器将自定义字体添加到应用程序的Info.plist,这将导致在启动应用程序时激活字体。
显示错误(IBSC_ERRORS)
在编译Storyboard文件时显示遇到的错误。
拼合编辑的情节串联板文件(IBSC_FLATTEN_NIBS)
将Storyboard文件编译为拼合(非包装)Storyboard文件。展平后,生成的Storyboard更加紧凑,但不再能被Interface Builder编辑。当禁用此选项时,生成的Storyboard文件在Interface Builder中保持可编辑状态。
默认模块(IBSC_MODULE)
为不带特定模块名称的Swift类定义模块名称。
显示通知(IBSC_NOTICES)
在汇编Storyboard文件时显示遇到的通知。
其他故事板编译器标志(IBSC_OTHER_FLAGS)
要传递给Interface Builder编译器的附加标志的列表。如果Xcode尚未为特定的Interface Builder编译器标志提供UI,请使用此设置。
剥离Storyboardc文件(IBSC_STRIP_NIBS)
分割可编辑的Interface Builder storyboardc文件以减小其部署的大小。由此产生的storyboardc更紧凑,但不再由Interface Builder编辑。当禁用此选项时,生成的storyboardc文件仍可由Interface Builder编辑。
显示警告(IBSC_WARNINGS)
在汇编Storyboard文件时显示遇到的警告。
包含在递归搜索中的子目录(INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES)
这是执行递归搜索时要包含的文件或目录名称的fnmatch()样式模式列表。默认情况下,这是空的,并且只在您要提供子目录中提供的递归搜索中排除的文件名模式列表(EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES)时才自定义。
包含的源文件名(INCLUDED_SOURCE_FILE_NAMES)
模式列表(由fnmatch(3)定义)指定在处理源构建阶段时显式包含的源文件的名称。此设置仅在与EXCLUDED_SOURCE_FILE_NAMES结合使用时才有用,并且可用于定义复杂的过滤器,以便为响应其他构建设置而构建阶段中的文件。
在Info.plist文件中展开构建设置(INFOPLIST_EXPAND_BUILD_SETTINGS)
在Info.plist文件中展开构建设置。
Info.plist文件(INFOPLIST_FILE)
包含捆绑使用的Info.plist信息的属性列表文件的项目相对路径。有关信息属性列表文件的详细信息,请参阅运行时配置指南中的信息属性列表文件。
Info.plist其他预处理器标志(INFOPLIST_OTHER_PREPROCESSOR_FLAGS)
其他标志在预处理Info.plist文件时传递给C预处理器。
Info.plist输出编码(INFOPLIST_OUTPUT_FORMAT)
指定输出Info.plist的输出编码。输出编码可以是二进制或XML。默认情况下,输出编码与输入不变。
INFOPLIST_PATH
指定该包的信息属性列表文件的路径。
Info.plist预处理程序前缀文件(INFOPLIST_PREFIX_HEADER)
在预处理Info.plist文件时隐式包含给定的文件。给定的路径应该是项目相对路径或绝对路径。
预处理Info.plist文件(INFOPLIST_PREPROCESS)
使用C预处理器预处理Info.plist文件。
Info.plist预处理器定义(INFOPLIST_PREPROCESSOR_DEFINITIONS)
空格分隔的foo或foo = bar形式的预处理宏列表。这些宏在预处理Info.plist文件时使用。
INFOSTRINGS_PATH
指定包含该包的本地化字符串文件的文件。
初始化例程(INIT_ROUTINE)
这是用于初始化的例程的名称。
启用基于文本的存根内联(INLINE_PRIVATE_FRAMEWORKS)
为基于文本的存根启用私有框架内联。
在`installhdrs`期间执行拷贝文件阶段(INSTALLHDRS_COPY_PHASE)
指定目标的“复制文件”构建阶段是否在installhdr构建中执行。
在`installhdrs`期间执行Shell脚本(INSTALLHDRS_SCRIPT_PHASE)
指定目标的“运行脚本”构建阶段是否在installhdr构建中执行。有关installhdr构建的详细信息,请参阅活动构建操作(ACTION)。
INSTALL_DIR
标识安装产品所在的开发人员文件系统中的目录。
安装组(INSTALL_GROUP)
已安装产品的组名或gid。
安装权限(INSTALL_MODE_FLAG)
用于安装产品文件的权限。
安装所有者(INSTALL_OWNER)
所有者名称或已安装产品的uid。
安装目录(INSTALL_PATH)
安装构建产品的目录。此路径由安装构建产品位置(DSTROOT)作为前缀。
保留专用外部符号(KEEP_PRIVATE_EXTERNS)
激活此设置将保留专用外部符号,而不是将它们转换为静态符号。执行单对象预链接时,也会遵守此设置。
链接器依赖信息文件的路径(LD_DEPENDENCY_INFO_FILE)
该设置定义了链接器应该发送有关哪些文件用作输入和生成的信息的路径。 Xcode使用这些信息进行依赖关系跟踪。将此设置的值设置为空将禁止将此选项传递给链接器。
动态库安装名称(LD_DYLIB_INSTALL_NAME)
在动态库中设置内部安装路径(LC_ID_DYLIB)。任何与库链接的客户端都会按照dyld找到这个库的方式记录该路径。如果未指定此选项,则将使用-o路径。构建除动态库之外的任何产品时,此设置将被忽略。请参阅动态库编程主题。
编写链接映射文件(LD_GENERATE_MAP_FILE)
激活此设置将导致链接器将映射文件写入磁盘,该映射文件详细说明输出映像中的所有符号及其地址。映射文件的路径由“链接映射文件路径”(LD_MAP_FILE_PATH)设置定义。
链接地图文件的路径(LD_MAP_FILE_PATH)
此设置定义了在写入链接映射文件(LD_GENERATE_MAP_FILE)设置被激活时由链接器写入的映射文件的路径。默认情况下,将为每个体系结构和构建变体编写一个单独的文件,这些文件将在产品链接目标的中间体目录中生成。
生成与位置相关的可执行文件(LD_NO_PIE)
激活此设置将阻止Xcode构建一个与位置无关的主可执行文件(PIE)。当瞄准macOS 10.7或更高版本时,PIE是主要可执行文件的默认设置,因此激活此设置将会改变该行为。当针对OS X 10.6或更早版本,或为i386构建时,PIE不是默认设置,因此激活此设置不会执行任何操作。
您无法从使用-mdynamic-no-pic编译的.o文件创建PIE。使用PIE意味着codegen不太理想,但地址随机化增加了一些安全性。
引用链接器参数(LD_QUOTE_LINKER_ARGUMENTS_FOR_COMPILER_DRIVER)
此设置控制是否使用-Xlinker引用链接器的参数。默认情况下,Xcode通过调用用于在目标中构建源文件的编译器的驱动程序来调用链接器,并且将-Xlinker传递给引用参数将导致编译器驱动程序将它们传递给链接器(而不是试图评估它们在司机内)。默认情况下,此设置已启用。禁用它将导致Xcode不使用-Xlinker将参数传递给链接器。如果目标已指示Xcode使用备用链接程序(例如,通过将LD设置设置为另一个链接程序的路径)并且备用链接程序不识别-Xlinker,则禁用此设置很有用。
运行路径搜索路径(LD_RUNPATH_SEARCH_PATHS)
这是要添加到正在创建的映像的运行路径搜索路径列表的路径的列表。在运行时,dyld使用运行路径搜索以@ rpath /开头的dylib。请参阅动态库编程主题。
其他Lex旗帜(LEXFLAGS)
空格分隔的附加标志列表传递给lex。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未为lex标志提供UI,请使用此设置。
生成不区分大小写的扫描程序(LEX_CASE_INSENSITIVE_SCANNER)
启用此选项会导致lex生成不区分大小写的扫描器。在lex输入模式中给出的字母的情况将被忽略,并且输入中的令牌将被匹配而不管大小写。在yytext中给出的匹配文本将具有保存的情况(例如,它不会被折叠)。
插入#line指令(LEX_INSERT_LINE_DIRECTIVES)
启用此选项将指示lex插入#line指令,以便相对于原始lex输入文件(如果错误是由于输入文件中的代码)或lex.yy.c(如果错误是lex的错误)。这个选项是默认启用的;禁用它传递一个标志来lex不插入#line指令。
禁止默认规则(LEX_SUPPRESS_DEFAULT_RULE)
启用此选项会导致默认规则(将不匹配的扫描器输入回显到stdout)被抑制。如果扫描器遇到与其任何规则不匹配的输入,则会中止并显示错误。该选项对于在扫描仪规则集中查找漏洞很有用。
禁止警告消息(LEX_SUPPRESS_WARNINGS)
启用此选项会导致lex禁止其警告消息。
图书馆搜索路径(LIBRARY_SEARCH_PATHS)
这是由产品使用的库链接器搜索的文件夹的路径列表。路径由空白分隔,所以任何带有空格的路径都需要正确引用。
显示隐藏的名称(LINKER_DISPLAYS_MANGLED_NAMES)
激活此设置会导致链接器显示C ++符号的重名。通常,不建议这样做,但将其打开可以帮助诊断和解决C ++链接错误。
与标准库链接(LINK_WITH_STANDARD_LIBRARIES)
启用此设置后,编译器驱动程序将自动将其标准库传递给链接器以在链接期间使用。如果需要,可以使用此标志禁用与标准库的链接,然后单个库可以作为其他链接器标志(OTHER_LDFLAGS)传递。
链接时间优化(LLVM_LTO)
启用此设置可在链接期间跨文件边界进行优化。
否:已禁用。不要使用链接时间优化。
单片链接时间优化:此模式执行二进制文件的单一链接时优化,将所有可执行代码组合到一个单元中,并运行积极的编译器优化。
增量链接时优化:该模式执行二进制文件的分区链接时优化,编译单元之间的内联以及并行地在每个单元上运行积极的编译器优化。与单片LTO相比,这样可以实现快速增量构建并使用更少的内存。
Mach-O型(MACH_O_TYPE)
此设置决定生成的二进制文件的格式以及在构建其他二进制文件时如何链接它。有关二进制类型的信息,请参阅在Mach-O编程主题中构建Mach-O文件。
可执行文件:可执行文件和独立二进制文件,无法链接。 mh_execute
动态库:动态库在构建时链接,并在需要时自动加载。 mh_dylib
软件包:软件包库在运行时显式加载。 MH_BUNDLE
静态库:静态库在构建时链接,并在执行时加载。 staticlib
可重定位目标文件:目标文件是在构建时链接的单模块文件。 mh_object
macOS部署目标(MACOSX_DEPLOYMENT_TARGET)
代码将加载到此版本和更高版本的macOS上。在早期版本中不可用的框架API将被弱链接;在调用更新的API之前,您的代码应检查空函数指针或特定系统版本。
禁止所有mapc警告(MAPC_NO_WARNINGS)
将.xcmappingmodel文件编译为.cdm而不报告警告。
模块映射文件(MODULEMAP_FILE)
这是LLVM模块映射文件的项目相对路径,它定义了编译器的模块结构。如果为空,则在启用“定义模块”(DEFINES_MODULE)时将自动生成适当的产品。
私有模块映射文件(MODULEMAP_PRIVATE_FILE)
这是定义专用标头模块结构的LLVM模块映射文件的项目相对路径。
MODULE_CACHE_DIR
编译器存储其缓存模块的文件夹的绝对路径 - 此缓存是性能改进。
模块标识符(MODULE_NAME)
这是生成的存根中列出的内核模块的标识符。这仅在构建内核扩展时使用。
模块启动例程(MODULE_START)
这定义了内核模块启动例程的名称。这仅在构建内核扩展时使用。
模块停止例程(MODULE_STOP)
这定义了内核模块停止例程的名称。这仅在构建内核扩展时使用。
模块版本(MODULE_VERSION)
这是生成的存根中列出的内核模块的版本。这仅在构建内核扩展时使用。
抑制删除规则的momc警告(MOMC_NO_DELETE_RULE_WARNINGS)
在编译.xcdatamodel(d)文件的过程中,禁止删除规则的管理对象模型编译器(momc)警告。
抑制momc关于缺少反向关系的警告(MOMC_NO_INVERSE_RELATIONSHIP_WARNINGS)
在编译.xcdatamodel(d)文件的过程中,从丢失的反向关系输出中禁止管理对象模型编译器(momc)警告
为具有超过100个属性的实体(MOMC_NO_MAX_PROPERTY_COUNT_WARNINGS)抑制momc警告
在编译.xcdatamodel(d)文件的过程中,对具有超过100个属性的实体的输出抑制管理对象模型编译器(momc)警告。
取消所有momc警告(MOMC_NO_WARNINGS)
在.xcdatamodel(d)文件的编译过程中,从输出中禁止管理对象模型编译器(momc)警告
在瞬态反比关系(MOMC_SUPPRESS_INVERSE_TRANSIENT_ERROR)上抑制momc错误
在编译.xcdatamodel(d)文件的过程中,禁止输出瞬态反向关系中的管理对象模型编译器(momc)警告。这只适用于在10.5.x中引入错误之前在10.4.x中正确编译的10.4.x创建的模型
其他金属链接器标志(MTLLINKER_FLAGS)
空格分隔的金属链接器标志列表
其他金属编译器标志(MTL_COMPILER_FLAGS)
空格分隔的编译器标志列表
生成调试信息(MTL_ENABLE_DEBUG_INFO)
产生调试信息。该信息是着色器分析所必需的。
启用快速数学(MTL_FAST_MATH)
针对可能违反IEEE 754标准的浮点算法启用优化,并禁用单精度浮点和半精度浮点的数学函数的高精度变体。
标题搜索路径(MTL_HEADER_SEARCH_PATHS)
这是在编译Metal时由编译器搜索包含或导入的头文件的文件夹的路径列表。路径由空白分隔,所以任何带有空格的路径都需要正确引用。 MTL_HEADER_SEARCH_PATHS,-I
忽略警告(MTL_IGNORE_WARNINGS)
启用此选项会导致所有警告被忽略。 MTL_IGNORE_WARNINGS,-W
金属语言版本(MTL_LANGUAGE_REVISION)
确定要使用的语言版本。必须提供此选项的值。
优化级别(MTL_OPTIMIZATION_LEVEL)
优化级别。
预处理器定义(MTL_PREPROCESSOR_DEFINITIONS)
空格分隔的形式为“foo”或“foo = bar”形式的预处理宏列表。
将警告视为错误(MTL_TREAT_WARNINGS_AS_ERRORS)
启用此选项会导致所有警告被视为错误。 MTL_TREAT_WARNINGS_AS_ERRORS, - 错误
其他Nasm标志(NASM_OTHER_FLAGS)
以空格分隔的附加标志列表传递给nasm汇编程序。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未为特定的nasm标志提供UI,请使用此设置。
Nasm Preinclude文件(NASM_PREINCLUDE_FILE)
指定要在主源文件开始处理之前预先包含的文件。
NATIVE_ARCH
标识正在执行构建的体系结构。
OBJECT_FILE_DIR
部分标识放置变体对象文件的目录。完整的规格是使用这个版本设置的变体来计算的。
中级构建文件路径(OBJROOT)
构建期间中间文件将放置的路径。中间文件包括生成的源文件,目标文件等。Shell脚本生成阶段也可以在这里放置和访问文件。通常,此路径不是针对每个目标设置的,而是针对每个项目或每个用户设置的。默认情况下,它被设置为$(PROJECT_DIR)/ build。
仅构建主动架构(ONLY_ACTIVE_ARCH)
如果启用,则仅构建活动架构。
按需资源初始安装标签(ON_DEMAND_RESOURCES_INITIAL_INSTALL_TAGS)
定义了一组初始随需应变资源标签,以便下载并随应用程序一起安装。
按需资源预取顺序(ON_DEMAND_RESOURCES_PREFETCH_ORDER)
一旦你的应用程序被安装,这就定义了一套应该下载的按需资源标签。这些标签是在您的应用程序的初始安装后下载的,并将按照列表中从第一个到最后一个提供的顺序下载这些标签。
OpenCL体系结构(OPENCL_ARCHS)
产品将被构建的体系结构列表。这通常设置为由平台提供的预定义的构建设置。
自动矢量化器(OPENCL_AUTO_VECTORIZE_ENABLE)
自动矢量化CPU的OpenCL内核。该设置仅对CPU有效。这使得可以编写一个在CPU和GPU之间便携和高性能的内核。
OpenCL编译器版本(OPENCL_COMPILER_VERSION)
平台支持的OpenCL C编译器版本。
将变体清零(OPENCL_DENORMS_ARE_ZERO)
此选项控制如何处理单精度和双精度非正规化数字。如果指定为构建选项,则可以将单精度非规格化数字刷新为零;如果支持双精度的可选扩展名,双精度非规格化数字也可以刷新为零。这是一个性能提示,如果设备支持单精度(或双精度)非规格化数字,OpenCL编译器可以选择不将清零清零。
如果设备不支持单精度非规格化数字,则该选项将被忽略,例如,未在CL_DEVICE_SINGLE_FP_CONFIG中设置CL_FP_DENORM位。
如果设备不支持双精度,或者它支持双精度但不支持双精度非规格化数字(例如CL_DEVICE_DOUBLE_FP_CONFIG中未设置CL_FP_DENORM位),则该选项将被忽略。
此标志仅适用于标量和矢量单精度浮点变量,以及对程序内这些浮点变量的计算。它不适用于读取或写入图像对象。
双单身(OPENCL_DOUBLE_AS_SINGLE)
将双精度浮点表达式视为单精度浮点表达式。该选项仅适用于GPU。
放宽IEEE合规性(OPENCL_FAST_RELAXED_MATH)
这样可以优化浮点运算,这可能会违反IEEE 754标准,以及在单精度浮点部分7.4节中定义的OpenCL数值符合性要求,双精度浮点部分的9.3.9节以及边界情况行为在OpenCL 1.1规范的第7.5节中。
这是为了进行性能优化。
该选项使预处理器宏__FAST_RELAXED_MATH__在OpenCL程序中定义。
使用MAD(OPENCL_MAD_ENABLE)
允许一个 b + c被疯狂的指令所取代。疯狂计算a b + c降低准确性。例如,一些OpenCL设备在将它添加到c之前,执行mad截断a b的结果。
这是为了进行性能优化。
优化级别(OPENCL_OPTIMIZATION_LEVEL)
无:不要优化。 -O0
通过这个设置,编译器的目标是降低编译成本,并使调试产生预期的结果。语句是独立的:如果用语句之间的断点停止程序,则可以为任何变量赋值新的值,或者将程序计数器更改为函数中的任何其他语句,并从源代码中获得您期望的结果。
快速:优化编译需要更多的时间,并为大功能提供更多的内存。 -O,-O1
使用此设置,编译器会尝试减少代码大小和执行时间,而不执行需要大量编译时间的任何优化。在Apple的编译器中,优化时默认禁用严格别名,块重新排序和块间调度。
更快:编译器执行几乎所有支持的优化,不涉及空间速度折衷。 -02
使用此设置,编译器不执行循环展开或函数内联,或者重命名寄存器。与快速设置相比,此设置会增加编译时间和生成的代码的性能。
最快:打开由“更快”设置指定的所有优化,并打开函数内联和注册重命名选项。此设置可能会导致更大的二进制文件。 -O3
最快,最小:优化尺寸。此设置启用通常不会增加代码大小的所有更快的优化。它还执行进一步的优化,旨在减少代码大小。 -os
OpenCL其他标志(OPENCL_OTHER_BC_FLAGS)
以空格分隔的附加标志列表传递给编译器。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未提供特定编译器标志的UI,请使用此设置。
OpenCL预处理器宏(OPENCL_PREPROCESSOR_DEFINITIONS)
空格分隔的foo或foo = bar形式的预处理宏列表。
订单文件(ORDER_FILE)
改变函数和数据排列顺序的文件路径。
对于输出文件中的每个部分,该部分中在订单文件中指定的任何符号都将移至其部分的开头,并按与订单文件中相同的顺序排列。订单文件是每行一个符号名称的文本文件。以#开头的行是注释。符号名称可以选择在其目标文件叶名和冒号前面(例如,foo.o:_foo)。这对于在多个文件中发生的静态函数/数据很有用。符号名称也可以选择位于体系结构之前(例如,ppc:_foo或ppc:foo.o:_foo)。这使您可以拥有一个适用于多种体系结构的订单文件。文字C字符串可以通过引用顺序文件中的字符串来排序(例如,“Hello,world \ n”)。
通常,您不应该在Debug或Development配置中指定一个订单文件,因为这样会使调试器对链接的二进制文件不易读。仅在发布或部署配置中使用它们。
另存为执行(OSACOMPILE_EXECUTE_ONLY)
以只执行格式保存输出脚本;该脚本可以运行,但不能在脚本编辑器或Xcode中打开。关闭此选项后,用户可以通过打开脚本来查看原始脚本源。
其他C标志(OTHER_CFLAGS)
空格分隔的附加标志列表传递给C和Objective-C文件的编译器。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未为特定的C或Objective-C编译器标志提供UI,请使用此设置。
其他代码签名标志(OTHER_CODE_SIGN_FLAGS)
要传递给codesign的附加选项列表(1)。
其他C ++标志(OTHER_CPLUSPLUSFLAGS)
C ++和Objective-C ++文件传递给编译器的空格分隔列表。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未提供用于C ++或Objective-C ++编译器标志的UI,请使用此设置。
其他链接器标志(OTHER_LDFLAGS)
在此设置中定义的选项传递给链接器的调用。
其他图书馆员标志(OTHER_LIBTOOLFLAGS)
在此设置中定义的选项将传递到归档库管理器的所有调用中,该库用于生成静态库。
其他米格旗帜(OTHER_MIGFLAGS)
空格分隔的附加标志列表传递给mig。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未提供用于mig标志的UI,请使用此设置。
其他OSACompile标志(OTHER_OSACOMPILEFLAGS)
空格分隔的附加标志列表传递给osacompile。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未为特定的osacompile标志提供UI,请使用此设置。
其他雷斯标志(OTHER_REZFLAGS)
空格分隔的附加标志列表传递给Rez编译器。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未提供特定Rez标志的UI,请使用此设置。
其他Swift标志(OTHER_SWIFT_FLAGS)
传递给Swift编译器的附加标志列表。
其他基于文本的InstallAPI标志(OTHER_TAPI_FLAGS)
在此设置中定义的选项传递给基于文本的InstallAPI工具的调用。
其他Swift标志(OTHER_SWIFT_FLAGS)
传递给Swift编译器的附加标志列表。
其他基于文本的InstallAPI标志(OTHER_TAPI_FLAGS)
在此设置中定义的选项传递给基于文本的InstallAPI工具的调用。
包装类型
统一类型标识符。标识目标生成的产品的类型。某些产品可能由单个二进制文件或归档文件组成。其他可能包含几个文件,这些文件被分组在一个目录下。这些容器目录被称为捆绑包。
属性列表输出编码(PLIST_FILE_OUTPUT_FORMAT)
指定属性列表文件(.plist)的输出编码。输出编码可以是二进制或XML。默认情况下,输出编码与输入不变。
PLUGINS_FOLDER_PATH
指定包含产品插件的目录。
预编译头使用来自生成目录的文件(PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR)
此设置允许更好地控制在项目之间共享预编译的前缀头文件。默认情况下,如果构建目录位于项目目录之外,则Xcode假定前缀头文件可能包含构建目录中的头文件。 Xcode无法提前确定,因为在需要信息时,其他项目可能尚未构建到共享构建目录中。
如果您的前缀文件从不包含构建目录中的文件,则可以将其设置为NO,以改善预编译头文件的共享。如果前缀确实使用项目目录中的构建目录中的文件,则可以将其设置为YES以避免可能导致构建失败的意外共享。
单对象预链接标志(PRELINK_FLAGS)
执行单对象预链接时要传递的其他标志。
预链接库(PRELINK_LIBS)
执行单对象预链接时要传递的其他库。
不要死带入口和术语(PRESERVE_DEAD_CODE_INITS_AND_TERMS)
激活此设置并结合使用死代码清除(DEAD_CODE_STRIPPING)(-dead_strip)选项,可使-no_dead_strip_inits_and_terms标志通过cc(1)传递给ld(1),以禁用初始化和终止例程的死代码清除。没有前面提到的死代码剥离(DEAD_CODE_STRIPPING)选项,不应使用此选项。
私人头文件夹路径(PRIVATE_HEADERS_FOLDER_PATH)
相对于构建的产品文件夹,在构建期间将专用标题复制到的位置。
产品包标识符(PRODUCT_BUNDLE_IDENTIFIER)
唯一标识该包的字符串。该字符串应该仅使用字母数字字符(A-Z,a-z,0-9),点(。)和连字符( - )反向DNS格式。该值用作构建的包的Info.plist中的CFBundleIdentifier。
预安装要求属性列表(PRODUCT_DEFINITION_PLIST)
指定产品归档的附加要求的文件路径。
产品模块名称(PRODUCT_MODULE_NAME)
用于为此目标构建的源代码模块的名称,以及将用于在实现源文件中导入模块的名称。必须是有效的标识符。
产品名称(PRODUCT_NAME)
这是目标生成的产品的基本名称。
项目名称(PROJECT_NAME)
当前项目的名称。
PROJECT_TEMP_DIR
标识项目中间构建文件的放置目录。该目录在项目定义的所有目标之间共享。运行脚本构建阶段应在由DERIVED_FILE_DIR标识的目录中生成中间构建文件,而不是此构建设置指定的位置。
配置文件(已弃用)(PROVISIONING_PROFILE)
有效的配置文件的UUID。丢失或无效的配置文件将导致生成错误。
此构建设置已弃用。改为使用配置文件(PROVISIONING_PROFILE_SPECIFIER)。
配置文件(PROVISIONING_PROFILE_SPECIFIER)
必须包含配置文件名称(或UUID)。丢失或无效的配置文件将导致生成错误。与开发团队(DEVELOPMENT_TEAM)结合使用以完全指定供应配置文件。
公共标题文件夹路径(PUBLIC_HEADERS_FOLDER_PATH)
相对于构建的产品文件夹,在建筑期间复制公共标题的位置。
重新导出的框架名称(REEXPORTED_FRAMEWORK_NAMES)
应该有它们的符号的框架名称列表可以从构建的库中重新导出。
重新导出的库名称(REEXPORTED_LIBRARY_NAMES)
应该有他们的符号的库名称的列表从构建的库中重新导出。
重新导出的库路径(REEXPORTED_LIBRARY_PATHS)
应该有它们的符号的库路径列表可以从构建的库中重新导出。
REMOVE_CVS_FROM_RESOURCES
指定复制时是否从CVS资源中删除CVS目录。
REMOVE_GIT_FROM_RESOURCES
指定复制时是否从捆绑资源中删除.git目录。
REMOVE_HG_FROM_RESOURCES
指定复制时是否从捆绑资源中删除.hg目录。
REMOVE_SVN_FROM_RESOURCES
指定复制时是否从捆绑资源中删除SVN目录。
二进制文件叉(RESMERGER_SOURCES_FORK)
确定ResMerger是否将二进制输入文件视为数据分支托管或资源分支托管,或者是否自动检查每个输入文件。
资源目标设备系列(RESOURCES_TARGETED_DEVICE_FAMILY)
当资源复制需要与默认的目标设备不同时,覆盖目标设备系列(TARGETED_DEVICE_FAMILY)。
RETAIN_RAW_BINARIES
指定是否保留未提取的二进制文件的副本。
REZ_COLLECTOR_DIR
指定ResMerger生成的收集资源管理器资源在添加到产品之前所存储的目录。
REZ_OBJECTS_DIR
指定由Rez生成的已编译资源管理器资源在使用ResMerger收集之前存储的目录。
Rez前缀文件(REZ_PREFIX_FILE)
在编译的每个Rez文件的命令行中隐式包含命名文件。给定的路径应该是项目相对路径或绝对路径。
预处理器定义(REZ_PREPROCESSOR_DEFINITIONS)
这些字符串将在编译资源管理器资源时定义。
预处理器未定义(REZ_PREPROCESSOR_UNDEFINITIONS)
编译资源管理器资源时,这些字符串将是未定义的。
解析别名(REZ_RESOLVE_ALIASES)
使别名无法解析或有条件地解决。默认是始终解析别名。
只读资源图(REZ_RESOURCE_MAP_READ_ONLY)
启用此选项会导致资源映射输出为只读。
Rez脚本类型(REZ_SCRIPT_TYPE)
使编译资源管理器资源时识别要使用的特定2字节字符脚本标识符。这允许将字符串中的2字节字符作为不可分割的实体来处理。默认的语言是Roman,它指定了1个字节的字符集。
Rez搜索路径(REZ_SEARCH_PATHS)
这是使用资源管理器资源搜索文件的路径列表。路径由空白分隔,所以任何带有空格的路径都需要正确引用。
显示诊断输出(REZ_SHOW_DEBUG_OUTPUT)
启用此选项会导致在编译资源管理器资源时编写版本和进度信息。
抑制类型重新声明警告(REZ_SUPPRESS_REDECLARED_RESOURCE_TYPE_WARNINGS)
启用此选项会导致关于重新声明的资源类型的警告被抑制。
“构建”期间分析(RUN_CLANG_STATIC_ANALYZER)
激活此设置将导致Xcode在每次构建期间在合格的源文件上运行Clang静态分析工具。
扫描包含的所有源文件(SCAN_ALL_SOURCE_FILES_FOR_INCLUDES)
激活此设置将导致在计算依赖关系图时,扫描所有源文件以查找include(例如,头文件),在这种情况下,如果包含的文件被更改,则包含文件将在下一次包含它的目标被重建建成。通常只扫描特定类型的文件,如C语言源文件。
如果您的项目包含使用自定义构建规则编译的异常类型的文件,则此设置很有用。
SCRIPTS_FOLDER_PATH
指定包含产品脚本的目录。
基础SDK(SDKROOT)
构建期间使用的基本SDK的名称或路径。该产品将根据位于指定SDK内的头文件和库进行构建。这个路径将被预置到所有的搜索路径,并且将通过环境传递给编译器和链接器。其他SDK可以在其他SDK(ADDITIONAL_SDKS)设置中指定。
符号排序标志(SECTORDER_FLAGS)
这些标志通常用于指定段中的符号排序选项,例如ld的-sectorder选项。
通常,您不应该在Debug或Development配置中指定符号排序选项,因为这样会使调试器对链接二进制文件的可读性降低。仅在发布或部署配置中使用它们。
分别编辑符号(SEPARATE_SYMBOL_EDIT)
当链接产品符号被编辑时激活此设置将导致编辑通过单独的nmedit(1)调用发生。否则,如果可能,在链接期间将进行编辑。
SHARED_FRAMEWORKS_FOLDER_PATH
指定包含产品共享框架的目录。
预编译头文件缓存路径(SHARED_PRECOMPS_DIR)
预编译前缀头文件在构建过程中放置的路径。缺省为$(OBJROOT)/ SharedPrecompiledHeaders。使用公共位置允许在多个项目之间共享预编译头文件。
跳过安装(SKIP_INSTALL)
如果启用,即使部署位置处于活动状态,也不要安装构建的产品。
SRCROOT
标识包含目标源文件的目录。
字符串文件输出编码(STRINGS_FILE_OUTPUT_ENCODING)
指定要用于字符串文件的编码(默认情况下,输出编码将是16位Unicode)。该值可以是NSStringEncoding(如NSString识别的数值之一),也可以是CFString理解的IANA字符集名称。如果文件无法转换为指定的编码,则操作将失败。
其他带状标志(STRIPFLAGS)
剥离构建的链接产品时要传递的其他标志。
带状链接产品(STRIP_INSTALLED_PRODUCT)
如果启用,则在执行部署后处理时,构建的链接产品将被剥离符号。
从PNG文件中删除文本元数据(STRIP_PNG_TEXT)
元数据将以PNG文件中的文本块的形式被删除,以减少磁盘上的占用空间。
带样式(STRIP_STYLE)
在构建的链接产品上执行的符号剥离级别。默认值由目标产品类型定义。
所有符号:完全去除二进制文件,删除符号表和重定位信息。所有,-s
非全局符号:删除非全局符号,但保存外部符号。非全局的,-x
调试符号:去除调试符号,但保存本地和全局符号。调试,-S
Strip Swift符号(STRIP_SWIFT_SYMBOLS)
调整由STRIP_STYLE设置指定的符号剥离级别,以便在构建的链接产品被剥离时,所有Swift符号将被删除。
支持的平台(SUPPORTED_PLATFORMS)
可以使用基本SDK的受支持平台的列表。如果可以使用不同的SDK为多个平台构建产品,则使用此设置。
支持基于文本的安装API(SUPPORTS_TEXT_BASED_API)
启用以表明目标支持基于文本的安装API,这将在安装构建期间启用其生成。
活动编译条件(SWIFT_ACTIVE_COMPILATION_CONDITIONS)
用于启用条件编译表达式的编译条件列表。
禁用安全检查(SWIFT_DISABLE_SAFETY_CHECKS)
优化时禁用运行时安全检查。
独占访问内存(SWIFT_ENFORCE_EXCLUSIVE_ACCESS)
强制对内存进行独占访问
导入路径(SWIFT_INCLUDE_PATHS)
Swift编译器为其他Swift模块搜索的路径列表。
安装Objective-C兼容性头(SWIFT_INSTALL_OBJC_HEADER)
对于框架,将描述桥接Swift类的Objective-C兼容性头文件安装到公共头文件夹路径(PUBLIC_HEADERS_FOLDER_PATH)中,以便使用框架从Objective-C代码访问它们。默认为YES。
Objective-C桥接头(SWIFT_OBJC_BRIDGING_HEADER)
定义要在Swift中公开的Objective-C接口的头文件路径。
Objective-C生成的接口标题名称(SWIFT_OBJC_INTERFACE_HEADER_NAME)
名称,用于由Swift编译器生成的用于Objective-C中#import语句的头文件。
优化级别(SWIFT_OPTIMIZATION_LEVEL)
无:编译没有任何优化。 -在一个
快速,单一文件优化:-O
快速,整体模块优化:-O-整体模块优化
预编译桥接头(SWIFT_PRECOMPILE_BRIDGING_HEADER)
为Objective-C桥接头生成预编译头(如果使用的话),以减少总体构建时间。
反射元数据级别(SWIFT_REFLECTION_METADATA_LEVEL)
此设置控制Swift编译器发出的反射元数据的级别。
All:输入有关Swift结构体和类的存储属性,Swift枚举类型以及它们的名称的信息,并将其发送到二进制文件中以便在Memory Graph Debugger中进行反射和分析。
没有名称:只有关于存储的属性和案例的类型信息被发送到二进制文件中,省略了它们的名字。 -disable-反射名
无:没有反射元数据发射到二进制文件。在Memory Graph Debugger中检测涉及Swift类型的内存问题的准确性将降级,并且Swift代码中的反射可能无法发现子类型的属性和枚举情况。 -disable反射元数据
取消警告(SWIFT_SUPPRESS_WARNINGS)
不要发出任何警告。
Swift 3 @objc推理(SWIFT_SWIFT3_OBJC_INFERENCE)
控制Swift编译器如何推断@objc的声明。
将警告视为错误(SWIFT_TREAT_WARNINGS_AS_ERRORS)
将所有警告视为错误。
构建产品路径(SYMROOT)
执行构建时所有产品的放置路径。通常,此路径不是针对每个目标设置的,而是针对每个项目或每个用户设置的。默认情况下,它被设置为$(PROJECT_DIR)/ build。
系统框架搜索路径(SYSTEM_FRAMEWORK_SEARCH_PATHS)
这是包含编译器在编译C,Objective-C,C ++或Objective-C ++时由编译器搜索的包含系统框架的文件夹的路径列表,以及由产品使用的框架的链接器。顺序是从最高到最低的优先顺序。路径由空白分隔,所以任何带有空格的路径都需要正确引用。此设置与“框架搜索路径”非常相似,除了搜索路径以抑制系统搜索路径中找到的标头的大多数警告的方式传递给编译器。如果编译器不支持系统框架搜索路径的概念,则搜索路径会附加到“框架搜索路径”中定义的任何现有框架搜索路径。
系统标题搜索路径(SYSTEM_HEADER_SEARCH_PATHS)
这是编译C,Objective-C,C ++或Objective-C ++时要由编译器搜索的包含或导入系统头文件的文件夹的路径列表。顺序是从最高到最低的优先顺序。路径由空白分隔,所以任何带有空格的路径都需要正确引用。此设置与“标题搜索路径”非常相似,不同之处在于标题以抑制系统搜索路径中找到的标题的大部分警告的方式传递给编译器。如果编译器不支持系统头搜索路径的概念,那么搜索路径会附加到“头文件搜索路径”中定义的任何现有头搜索路径。
基于文本的安装API验证模式(TAPI_VERIFY_MODE)
选择构建基于文本的安装API时要报告的警告和错误的级别。
目标设备系列(TARGETED_DEVICE_FAMILY)
构建系统使用选定的设备为其添加到目标的Info.plist文件的UIDeviceFamily项设置正确的值。
TARGET_BUILD_DIR
标识包含产品文件的目录层次结构的根(没有中间构建文件)。在定义目标的产品文件上运行的脚本构建阶段应使用此构建设置的值,但对其他目标的产品文件进行操作的运行脚本构建阶段应使用BUILT_PRODUCTS_DIR。
目标名称(TARGET_NAME)
当前目标的名称。
TARGET_TEMP_DIR
标识包含目标的中间构建文件的目录。运行脚本构建阶段应将中间文件放置在DERIVED_FILE_DIR所指示的位置,而不是此构建设置所标识的目录。
测试主机(TEST_HOST)
注入一组测试的可执行文件的路径。只有在测试应用程序或其他可执行文件时指定此设置。
基于文本的安装API文件(TEXT_BASED_API_FILE)
如果提供并启用了基于文本的InstallAPI,则将文件的路径用作产品的基于文本的InstallAPI,而不是从已安装的标题内容中生成API。
将缺失的基线视为测试失败(TREAT_MISSING_BASELINES_AS_TEST_FAILURES)
运行通过XCTestCase测量性能的测试时,请将缺失的基线报告为测试失败。
未导出符号文件(UNEXPORTED_SYMBOLS_FILE)
列出符号不导出的文件的项目相对路径。有关导出符号的详细信息,请参阅ld -exported_symbols_list。
UNLOCALIZED_RESOURCES_FOLDER_PATH
指定包含产品未定位资源的目录。
用户标题搜索路径(USER_HEADER_SEARCH_PATHS)
这是在编译C,Objective-C,C ++或Objective-C ++时,编译器要搜索的包含或导入的用户头文件(列在引号中的头文件)的文件夹路径列表。路径由空白分隔,所以任何带有空格的路径都需要正确引用。有关如何使用此设置的更多详细信息,请参阅始终搜索用户路径(不推荐)(ALWAYS_SEARCH_USER_PATHS)。如果编译器不支持用户头的概念,那么搜索路径将被添加到在头文件搜索路径(HEADER_SEARCH_PATHS)中定义的任何现有的头搜索路径。
使用标题地图(USE_HEADERMAP)
允许使用标题映射,这为编译器提供了从文本标题名称到其位置的映射,绕过了正常的编译器标题搜索路径机制。这允许源代码在文件系统中的各个位置包含标题,而不需要更新标题搜索路径构建设置。
验证内置产品(VALIDATE_PRODUCT)
如果启用,则作为构建过程的一部分对产品执行验证检查。
有效的体系结构(VALID_ARCHS)
应该实际构建目标的空间分隔的体系结构列表。对于每个目标,这与架构(ARCHES)中指定的列表相交,并生成结果集。这允许个别目标选择退出特定架构的建设。如果结果的体系结构是空的,将不会生成可执行文件。
VERBOSE_PBXCP
指定复制文件时目标的“复制文件”构建阶段是否生成附加信息。
版本控制系统(VERSIONING_SYSTEM)
选择用于版本标记生成文件的过程。
无:不使用版本控制系统。
Apple Generic:使用当前的项目版本设置。苹果通用
版本控制用户名(VERSION_INFO_BUILDER)
这定义了对执行构建的用户的引用,以包含在生成的Apple Generic Versioning存根中。默认为USER环境变量的值。
生成的版本控制变量(VERSION_INFO_EXPORT_DECL)
这为生成的Apple Generic Versioning存根中的版本信息符号声明定义了一个前缀字符串。例如,可以使用此选项将可选的导出关键字添加到版本符号声明中。这应该很少被改变。
生成的版本控制源文件名(VERSION_INFO_FILE)
用于指定将由Apple Generic Versioning生成并编译到产品中的源文件的名称。默认情况下,它被设置为$(PRODUCT_NAME)_vers.c。
版本控制名称前缀(VERSION_INFO_PREFIX)
用作生成的版本控制源文件中版本信息符号名称的前缀。如果您以导出的符号为前缀,则可能需要将其设置为相同的前缀。
版本控制名称后缀(VERSION_INFO_SUFFIX)
用作生成的版本控制源文件中版本信息符号名称的后缀。这很少使用。
其他警告标志(WARNING_CFLAGS)
空格分隔的附加警告标志列表传递给编译器。如果Xcode尚未为特定的编译器警告标志提供UI,请使用此设置。
警告链接器标志(WARNING_LDFLAGS)
这些标志是通过链接器调用传递的,默认情况下给连接器赋予-no_arch_warnings标志,以避免在多架构构建过程中产生许多警告。
包装扩展(WRAPPER_EXTENSION)
用于产品包装的扩展,具有基于产品类型的默认值。
WRAPPER_NAME
指定产品包的文件名,包括适当的扩展名。
WRAPPER_SUFFIX
指定产品包名称的后缀,包括将扩展名与包名称的其余部分分开的字符。
附加插件数据(XCODE_PLUGINCOMPILER_APPEND)
将编译的插件数据附加到现有的插件数据,而不是覆盖它。
复制原始插件数据(XCODE_PLUGINCOMPILER_COPY_ORIGINAL)
复制原始(未编译)插件数据以与编译的插件数据一起输出。
包含扩展名XML(XCODE_PLUGINCOMPILER_INCLUDE_EXTENSION_XML)
将扩展XML数据包含在生成的xcplugindata文件中。
插件数据格式(XCODE_PLUGINCOMPILER_OUTPUT_FORMAT)
属性列表格式,二进制或XML,用于生成xcplugindata文件。
插件最大开发者工具版本(XCODE_PLUGINCOMPILER_TOOLS_VERSION_MAX)
将使用此插件的最新版本的开发人员工具。
插件最小开发者工具版本(XCODE_PLUGINCOMPILER_TOOLS_VERSION_MIN)
将使用此插件的最早版本的开发人员工具。
其他Yacc标志(YACCFLAGS)
空格分隔的附加标志列表传递给yacc。确保反斜线转义任何包含空格或特殊字符的参数,例如可能包含空格的路径名。如果Xcode尚未为yacc标志提供UI,请使用此设置。
生成的文件词干(YACC_GENERATED_FILE_STEM)
用于由yacc生成的文件的文件干。根据此设置的值,这些文件将被命名为<stem> .tab.c和<stem> .tab.h。标准(y)选项将导致同一目标中的所有yacc源文件生成相同的输出文件,并且不推荐用于包含多个yacc源文件的目标。
生成调试指令(YACC_GENERATE_DEBUGGING_DIRECTIVES)
启用此选项将更改yacc生成的预处理器指令,以便将调试语句合并到编译后的代码中。
插入#line指令(YACC_INSERT_LINE_DIRECTIVES)
启用此选项会导致yacc在生成的代码中插入#line指令。 #line指令让C编译器将生成的代码中的错误与用户的原始代码相关联。如果禁用此选项,则用户在源文件中指定的#line指令仍将保留。