当前位置:首页 » 编程软件 » xcode编译设置

xcode编译设置

发布时间: 2025-03-28 11:42:47

1. 如何加快xcode编译速度

1. 增加XCode执行的线程数
可以根据自己Mac的性能,更改线程数设置5:defaults write com.apple.Xcode 5
另外也有一个设置可以开启:defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
XCode默认使用与CPU核数相同的线程来进行编译,但由于编译过程中的IO操作往往比CPU运算要多,因此适当的提升线程数可以在一定程度上加快编译速度。
2.将Debug Information Format改为DWARF
在工程对应Target的Build Settings中,找到Debug Information Format这一项,将Debug时的DWARF with dSYM file改为DWARF。
这一项设置的是是否将调试信息加入到可执行文件中,改为DWARF后,如果程序崩溃,将无法输出崩溃位置对应的函数堆栈,但由于Debug模式下可以在XCode中查看调试信息,所以改为DWARF影响并不大。这一项更改完之后,可以大幅提升编译速度。
比如在目前本人负责的项目中,由于依赖了多个Target,所以需要在每个Target的Debug Information Format设置为DWARF。顺便提一下,如果通过Cocoapod引入第三方则Debug Information Format默认就是设置为DWARF的。
SDWebImage通过Cocoapod``Debug Information Format的默认设置
注意:将Debug Information Format改为DWARF之后,会导致在Debug窗口无法查看相关类类型的成员变量的值。当需要查看这些值时,可以将Debug Information Format改回DWARF with dSYM file,clean(必须)之后重新编译即可。
3.将Build Active Architecture Only改为Yes
在工程对应Target的Build Settings中,找到Build Active Architecture Only这一项,将Debug时的NO改为Yes。
664334-fa1eb995c140ce0f.png
这一项设置的是是否仅编译当前架构的版本,如果为NO,会编译所有架构的版本。需要注意的是,此选项在Release模式下必须为NO`,否则发布的ipa在部分设备上将不能运行。这一项更改完之后,可以显着提高编译速度。
4.设计编译优化等级
不要再项目中或者静态库中使用-O4,因为这会让Clang链接Link Time Optimizations (LTO)使得编译更慢,通常使用-O3。
注意:在设置编译优化之后,XCode断点和调试信息会不正常,所以一般静态库或者其他Target这样设置。
4.资源整合
4.1 将常用的代码及文件打包成静态库
4.2 添加预编译文件,把常用的头文件放到预编译文件里面
4.3 能用@class就用@class

2. Generate Debug Symbols编译设置

Xcode工程中有个编译设置 Generate Debug Symbols ,翻译为'生成调试符号', 默认设置是为YES的。看到这个设置我们可能会思考🤔:如果设置release环境下为NO,不生成调试符号的话,包体积会不会更小呢?毕竟我们发布到App Store上的版本是不需要调试的。带着这样的出发点,于是去了解了一番。

首先 ,在项目的target下打断点后,运行 ==》程序遇到断点不会停。

然后 ,这个情况下在项目的pod库子工程打断点会不会停呢?
因为项目中使用Pod进行库管理,并且 Podfile 中写了 generate_multiple_pod_projects: true , 所以Pod库会生成一个子工程。在Pod库中打断点,运行 ==> 程序遇到断点会停住,底部调试台左边的变量也会显示,但是 po 命令打印时会有两种情况:

最后 ,我们现在把子工程中的 Generate Debug Symbols , 改为NO,断点也是不会停住的!!!

对于上述的结果,我们首先想到的是 动态库在生成打包生成ipa时是会独立生成 可执行文件 的,而静态库是直接打包进主工程二进制文件中的。

所以接下来,我们在 release模式 下运行一次,对比 Generate Debug Symbols 设置为YES和NO的区别:

本人的demo工程编译到运行的对比:
YES时:42s左右
NO时 :38s左右

两种设置下分别打开 Proct (这个需要 xcode中导入了pod库才会生成,并且换设置时别忘了 clean 一下),对比发现, 设置为YES会多出dSYM文件:

Clang文档对-g的描述是:

项目中我们一般是默认要生成调试符号的,即Generate Debug Symbols = YES。因为我我们需要dSYM才能定位Crash,其次是对于APP来说ipa的体积并没有减小!

对于项目中集成了Bugly的同行们应该对于 dSYM 不陌生.

具体可以参看文章:
iOS dSYM详解和分析crash,ips文件
dwarf格式
DWARF文件初探——提取轻量符号表

热点内容
苹果uc清理缓存 发布:2025-03-31 11:15:23 浏览:506
如何在命令栏搜ftp 发布:2025-03-31 11:09:37 浏览:101
109五开最便宜怎么配置 发布:2025-03-31 10:55:49 浏览:70
优酷视频上传加密码 发布:2025-03-31 10:44:18 浏览:675
OCM服务器地址基站地址 发布:2025-03-31 10:44:17 浏览:645
页游传奇脚本 发布:2025-03-31 10:43:44 浏览:35
java文件上传视频 发布:2025-03-31 10:34:03 浏览:985
win7怎么搜索文件夹 发布:2025-03-31 10:34:03 浏览:871
qq怎么用手机改密码 发布:2025-03-31 10:34:01 浏览:928
堆糖批量上传图片 发布:2025-03-31 10:32:20 浏览:351