一 编译选项设置
1 Optimization Level 编译器的优化级别
编译策略是对代码编译过程的优化,优化后的代码效率比较高,但是可读性比较差,且编译时间更长。
release模式设置为Fastest, Smallest[-Os] Debug模式设置为None
设置 | 参数 |
---|---|
None | 编译器不会尝试优化代码。在开发期间,当您专注于解决逻辑错误并需要快速编译时,请使用此选项。请勿使用此选项来运送可执行文件。 |
Fast | 编译器执行简单的优化以提高代码性能,同时最小化对编译时间的影响。此选项在编译期间也使用更多内存。 |
Faster | 编译器几乎执行所有支持的优化,不需要空时权衡。编译器不使用此选项执行循环展开或函数内联。此选项会增加编译时间和生成代码的性能。 |
Fastest | 编译器执行所有优化以尝试提高生成代码的速度。当编译器执行积极的函数内联时,此选项可以增加生成代码的大小。通常不建议使用此选项。 |
Fastest, Smallest | 编译器执行通常不会增加代码大小的所有优化。这是传送代码的首选选项,因为它为您的可执行文件提供了更小的内存占用。 |
2 Debug Information Format
debug 模式设置为DWARF
这一项设置的是是否将调试信息加入到可执行文件中,改为DWARF后,如果程序崩溃,将无法输出崩溃位置对应的函数堆栈,但由于Debug模式下可以在XCode中查看调试信息,所以改为DWARF影响并不大。这一项更改完之后,可以大幅提升编译速度。
release 模式设置为
DWARF with dSYM File
3 Build Active Architecture Only
- 设置为NO的时候,会编译支持的所有的版本
- 设置为YES的时候,是为Debug的时候速度更快,它只编译当前的architecture 版本
以上2 和 3 对会对缩短代码的编译时间。
4 Generate Debug Symbols 调试符号
和xcode 默认的一致即可
当
Generate Debug Symbols
设置为
YES
时,编译产生的.o文件会大一些,当然最终生成的可执行文件也大一些。
当
Generate Debug Symbols
设置为
NO
的时候,在Xcode中设置的断点不会中断。
5 Enable Bitcode
对应iOS,bitcode是可选的。
对于watchOS,bitcode是必须的。
Mac OS不支持bitcode。
LLVM是目前苹果采用的编译器工具链,Bitcode是LLVM编译器的中间代码的一种编码,LLVM的前端可以理解为C/C++/OC/Swift等编程语言,LLVM的后端可以理解为各个芯片平台上的汇编指令或者可执行机器指令数据,那么,BitCode就是位于这两者直接的中间码. LLVM的编译工作原理是前端负责把项目程序源代码翻译成Bitcode中间码,然后再根据不同目标机器芯片平台转换为相应的汇编指令以及翻译为机器码.这样设计就可以让LLVM成为了一个编译器架构,可以轻而易举的在LLVM架构之上发明新的语言(前端),以及在LLVM架构下面支持新的CPU(后端)指令输出,虽然Bitcode仅仅只是一个中间码不能在任何平台上运行,但是它可以转化为任何被支持的CPU架构,包括现在还没被发明的CPU架构,也就是说现在打开Bitcode功能提交一个App到应用商店,以后如果苹果新出了一款手机并CPU也是全新设计的,在苹果后台服务器一样可以从这个App的Bitcode开始编译转化为新CPU上的可执行程序,可供新手机用户下载运行这个App.