必赢亚洲手机app下载


穷人越穷

纵深解读伯明翰新都心凯德MALL苹果电脑

让Xcode编译速度飞起来

前几天来介绍一个小工具ccache,其得以增进xcode的编译速度。说起缘由,是因为我的苹果电脑配置比较低,而每一遍开发调试或测试打包都亟待编译工程,尽管品类工程代码量不算大,不过编译的时间依旧很长,越发是修改了头文件或者Archive包装时,望着进程条像蜗牛在爬一样,心里都有小动物在奔腾……

好在蒙受了ccache,其规律是透过把项目的源文件用ccache编译器编译,然后缓存编译生成的新闻,从而在下一遍编译时,利用那几个缓存加快编译的快慢,近日支撑的语言有:CC++Objective-CObjective-C++,不过只要找不到ccache编译器,那么依然会挑选clang编译器来编译源文件。上面介绍一下具体的选用进程:

添加ccache脚本

下面是ccache的编译脚本,命名为:ccache-clang,需求加上到工程根目录,ccache哪怕经过那一个脚本来选取编译器的,该脚本的详实介绍如下:

第1行:指定那是一个bash脚本

第2行type -p ccache认清是不是存在ccache命令,/dev/null是空设备文件,2>&1是把标准错误流重定向到专业输出流,所以整行的效益是先判断命令是或不是留存,如若不设有就把规范错误流重定向成正规输出流后,再重定向到空文件,那样错误就不会在控制台上打印出来了

第3行:设置最大的缓存

第4行苹果电脑,:设置源文件的编译形式,默许是trueccache会先处理源文件,要是缓存没有打中,就编译源文件;而一旦是false,就会在缓存没有打中时,不是平素编译源文件,而是编译处理后的文件,但是那也许会有难点,因为差其余编译器,预处理后的文本内容不相同

第5行:设置为true,表明ccache直白动用缓存目录下的文本,而不是拷贝后的公文,那样可以加速编译速度,默许是false

第6行:设置升高缓存命中率,忽略__FILE__、DATE、__TIME__等宏,也不检讨文件的改动和创立时间是不是是最新的等等

第9行:指定日志文件的门道

第10行:执行/usr/bin/clang命令,"$@"是指装有参数

第12行:执行系统默许的clang命令,"$@"是指具有参数

#!/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

    # 指定日志文件路径到桌面,等下排查集成问题有用,集成成功后删除,否则很占磁盘空间
    export CCACHE_LOGFILE='~/Desktop/CCache.log'
    exec ccache /usr/bin/clang "$@"
else
    exec clang "$@"
fi

即使您的代码或者三方库里的代码中有C++文本,则需求把脚本命名为:ccache-clang++,同时,脚本中的clang也急需修改为clang++,如下:

#!/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

  # 指定日志文件路径到桌面,等下排查集成问题有用,集成成功后删除,否则很占磁盘空间
  export CCACHE_LOGFILE='~/Desktop/CCache.log'
  exec ccache /usr/bin/clang++ "$@"
else
  exec clang++ "$@"
fi

配置Xcode项目

1.添加一个CC常量

在档次的Build Settings里,添加一个常量:CC,值为脚本的总体路径:$(SRCROOT)/ccache-clang(脚本在根目录下)

苹果电脑 1

添加CC常量

苹果电脑 2

因为ccache不支持Clang Modules,所以需求关闭项目标Modules慎选,如果你的工程里有用的@import UIKit等,那么现在必要替换为#import <UIKit/UIKit>,那是因为关闭Moduels后,Xcode不会再自动导入模块了,对于任何的模块,你还要求在Linked Frameworks and Libraries里手动导入所需模块。

配置Pod项目

一旦项目中用到了CocoaPods,还亟需设置Pod工程,因为Pod工程也亟需关闭Modules拔取,大家可以按照修改Xcode品种的点子来修改Pod工程的modules布置,可是每一遍pod update会把Pod工程重新生成,Modules慎选又被改回去了,所以大家直接在Podfile里参与上面的代码,让Pod工程在变更的时候就倒闭Modules慎选,同时参预CC常量,就足以在编译时用缓存加快了。

不过,由于我们关闭了modules选料,即使某个Pod工程用到了系统的框架,则要求遵守Xcode工程的法门添加到对应的Pod工程里,否则会唤醒Undefined symbols xxx for architecture arm7等等,即使每趟换代Pod后,都需求重新添加所需的框架,不过考虑到编译速度的升级,而Pod不会时常更新,所以也不是很麻烦。

post_install do |installer_representation|
  installer_representation.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      #关闭 Enable Modules
      config.build_settings['CLANG_ENABLE_MODULES'] = 'NO'

      # 在生成的 Pods 项目文件中加入 CC 参数,路径的值根据你自己的项目来修改
      config.build_settings['CC'] = '$(PODS_ROOT)/ccache-clang' 
    end
  end
end

应用ccache

安装已毕后,就可以利用ccache了,首次因为还并未缓存,要添加缓存,所以编译的时辰会比没有用ccache要多会儿,不过从第二次之后,会有缓存命中,就足以加快编译速度了,多次后头,可以明确感到到,编译的快慢快了重重,一般至少了加快一倍以上,大家也足以用命令来查阅ccache -s的缓存的命中情状:

苹果电脑 3

可以见见,现在的缓存命中率是53.01%,从前打包须求10分钟,现在3分钟搞定,喝茶的年华又多了,是或不是很开森,^_^。

由此丰硕ccache,项目标编译速度获得了特大的晋级,对于急需开销很长日子展开编译的档次,是卓殊值得的。


什么样将 iOS
项目的编译速度升高5倍

ccache — a fast C/C++ compiler cache

ccache
让你的编译时间飞起来

linux中shell变量$#,$@,$0,$1,$2的含义解释

相关文章

No Comments, Be The First!
近期评论
    功能
    网站地图xml地图