必赢亚洲手机app下载


恶之花

调节工具

让Xcode编译速度飞起来苹果电脑

明天来介绍2个小工具ccache,其能够增强xcode的编写翻译速度。说起缘由,是因为自个儿的苹果电脑配置比较低,而每回开发调节和测试或测试打包都急需编写翻译工程,就算项目工程代码量不算大,可是编写翻译的时间照旧相当短,特别是修改了头文件大概Archive包裹时,望着进程条像蜗牛在爬一样,心里都有小动物在奔腾……

幸而境遇了ccache,其规律是经过把品种的源文件用ccache编写翻译器编写翻译,然后缓存编写翻译生成的新闻,从而在下3回编写翻译时,利用那个缓存加速编写翻译的速度,近来援助的言语有:CC++Objective-CObjective-C++,可是只要找不到ccache编写翻译器,那么还是会挑选clang编写翻译器来编译源文件。上边介绍一下有血有肉的使用进程:

添加ccache脚本

下面是ccache的编写翻译脚本,命名为:ccache-clang,要求加上到工程根目录,ccache固然经过那些脚本来采纳编译器的,该脚本的详实介绍如下:

第1行:钦点那是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,项指标编写翻译速度获得了天翻地覆的升级,对于急需费用十分短日子进行编译的种类,是13分值得的。


怎么样将 iOS
项指标编写翻译速度增进5倍

ccache — a fast C/C++ compiler cache

ccache
让您的编写翻译时间飞起来

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

相关文章

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