使用CCatch优化编译时间

本文介绍了如何通过安装和配置CCache来优化Xcode项目的编译时间,包括安装CCache、创建编译脚本、调整Xcode项目设置、处理CocoaPods等步骤,最终实现编译时间的显著减少。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装 CCache

如果已经安装过homebrew(Mac OSX上的软件包管理工具),可以通过以下命令直接安装:

brew install ccache

如果没有安装homebrew,需要先安装homebrew

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
创建 CCache 编译脚本

安装完ccache之后我们需要让它介入到整个编译过程,新建一个空白文本文件,名称为ccache-clang,并保存如下内容:

将此文件存放在工程目录下,然后进入工程目录,将此文件改为可执行文件:

chmod 777 ccache-clang

如果你的代码或者是第三方库的代码用到了C++,则把ccache-clang这个文件复制一份,重命名成ccache-clang++。相应的对clang的调用也要改成clang++,否则 CCache 不会应用在 C++ 的代码上。

#!/bin/sh
if type -p ccache >/dev/null 2>&1; then
export CCACHE_MAXSIZE=10G
export CCACHE_CPP2=true
export CCACHE_HARDLINK=true
export CCACHE_SLOPPINESS=file_macro,time_macros,include_file_mtime,include_file_ctime,file_stat_matches

exec ccache /usr/bin/clang++ "$@"
else
exec clang++ "$@"
fi

同样将此文件更改为可执行文件.

Xcode 项目的调整

定义CC常量
在项目的 Build Settings中,点击加号,选择 Add User-Defined Setting.添加一个常量CC,.这个值会让 Xcode 在编译时把执行路径的可执行文件当做 C 编译器。

图111

如果ccache-clang跟工程文件平级,那么CC常量的值为 $(SRCROOT)/ccache-clang.如果的脚本不是放在项目根目录,则自行调整路径。

同理,如果工程中有C++相关,需要创建一个常量CXX,值为
$(SRCROOT)/ccache-clang++.

修改引入

ccache不支持Clang Modules,所以需要把Enable Modules关闭.
图2222

关闭Enable Modules后需要修改@import 为 #import,如果用到了系统框架还需要在Target 的 Build Phrase -> Link Binary With Libraries手动引入.

CocoaPods处理

podfile中添加处理

post_install do |installer_representation|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|

#排除的 Pod 的名字
if  target.name != 'NXFramework' && target.name != 'YYKit'
# 关闭 Enable Modules
config.build_settings['CLANG_ENABLE_MODULES'] = 'NO'
# 在生成的 Pods 项目文件中加入 CC 参数,路径的值根据你自己的项目来修改
config.build_settings['CC'] = '$(SRCROOT)/ccache-clang'
end
end

# 拷贝主工程的ccache-clang文件到Pods下面
FileUtils.cp('ccache-clang', 'Pods/ccache-clang')
end
end

需要注意的是,如果你使用的某个 Pod 引用了系统框架,例如AFNetworking引用了System Configuration,你需要在你自己项目的Build Phrase -> Link Binary With Libraries里面代为引入,否则你编译时可能会收到 Undefined symbols xxx for architecture yyy一类的错误。

总结

经过测试,使用CCatch,clean后进行编译(选择设备情况下),编译时间从90s左右优化到50s左右.还是有明显提高的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值