2020-11-06

incrediBuild踩坑笔记

软件介绍

       IncrediBuild是一款编程开发工具,可加快C/C++ 的编译和创建速度。能无缝集成到Visual Studio开发环境中,采用Xoreax 的多线程处理技术,不必改变项目文件的代码。

https://baike.baidu.com/item/Xoreax%20IncrediBuild

编译速度慢向来是C++/C程序语言的一个最大的弱点.开发者花费几个小时在工作站上等待整个产品的创建,或者一天好多次花十分钟等待不断增加的编译的完成工作效率很低而且浪费时间.

IncrediBuild对此首次提供了独特有效的解决方案.通过使用Xoreax分布式编译(多线程处理)技术, Visual Studio project的编译速度将大大提高,而且不必改变项目文件代码

IncrediBuild无缝集成到Visual Studio开发环境,并且有很强的命令行界面,大大增强了Microsoft Visual Studio开发环境.

项目背景:

       随着客户端插件增多,现在客户端编译越来越慢,目前我们项目fast的代码通过Jenkins进行自动化构建需要30多分钟。对于现在的敏捷开发流程有严重的影响,需要进行优化。

初步尝试:

       软件可以通过互联网下载和安装。

参考https://blog.csdn.net/lindexi_gd/article/details/79399623

  1. 初步尝试了incredibuild9_45.exe,但是目前只支持最高的vs版本是vs2013,目前我们使用了vs2015+qt5.8.0,所以无法使用。故尝试了incredibuild8,但是目前其license试用版本无法在我们的云桌面注册和使用,故放弃。
  2. 尝试了其他分布式编译软件如fastbuild,学习和使用成本太高,入门门槛太高,不适用于现在的开发模式。有预算的话,建议买IncrediBuild。
  3. 联系IncrediBuild公司在中国的代理公司, 其提供了incredibuild9_50版本,兼容vs2015。
  4. 尝试在云桌面安装,使用其提供的license,可以注册,但是无法作为coordinator和agent进行通信。尝试失败。具体原因是云桌面无法开通30010等端口。
  5. 联系IncrediBuild,其提供了离线版本的license,和硬件绑定使用。注册了53.14的编译机作为coordinator

离线IncrediBuild软件license需要和指定机器绑定,故目前只能通过53.14作为编译机的master进行构建。

环境及软件项目现状

     环境

A、系统 Windows7及以上

B、 16c 32G 1台 物理机

C、 winserver 2008 16c 32G 物理机

D、 win 7 8c 32G 虚拟机 3台

项目结构:

5个基础库

196个插件库-之间无依赖,绝对适合分布式并行编译。

价格

价格: 120$ * 16core * 6台 * 5年 = 48000$

结合vs编译

       安装IncrediBuild时,自动安装vs插件,无需二次安装,方便使用。通过菜单栏IncrediBuild进行编译,监视框位于下方。

       TIPS: 必须生成solution才可以进行编译。

 

 

且需要配置profile,如下:

 

Profile需要和工程名同步,命名为  [solutionname].ib_profile.xml,放置于sln文件的相同路径下。

结合Jenkins编译

     整体编译

结合solution vs进行编译,先手工生成solution,进行编译。

       提交代码库自动构建时,有问题,生成的vcxproj文件里的路径是绝对路径,无法进行适配,故需要自动生成的vcxproj。具体命令是

qmake -r -tp vc ../modules/modules.pro

注意上述命令的 –r,是遍历生成所有的sln和vcxproj,否则只能生成当前路径下的。

       在进行编译时,直接编译modules.sln时,会有问题

buildconsole ./modules.sln /cfg="Release|x64"  /openmonitor   /MAXCPUS=256 /rebuild /title="FAST_CLIENT"

因为这个IncrediBuild有个bug,就是无法有效识别依赖关系,根源是sln中无依赖关系,即qmake生成 sln时,没有将依赖关系同步到sln中,具体愿意需要排查下sln的机制。

     顺序编译

       取消编译modules.sln整体,改为顺序编译,先编译基础库,再编译应用插件库。

 

buildconsole "./shareinclude/shareinclude.sln" /cfg="Release|x64" /MAXCPUS=256  /rebuild  /title="FAST_CLIENT11"

buildconsole "./platform/platform.sln" /cfg="Release|x64" /rebuild  /title="FAST_CLIENT11"  /MAXCPUS=256  /profile="c:/modules.ib_profile.xml"

buildconsole "./InstructionManager/InstructionManager.sln" /cfg="Release|x64"  /MAXCPUS=256 /rebuild /title="FAST_CLIENT11"

 

buildconsole "./fast/fast.sln" /MAXCPUS=256 /openmonitor  /cfg="Release|x64"  /rebuild /title="FAST_CLIENT11"  /profile="c:/modules.ib_profile.xml"

 

实测效果

改造前:

 

改造后:

 

推广建议

Windows下客户端编译效果提升明显,提升由28分钟提升到9分钟,时间缩短67%。有效提升了客户端编译及发布效率。

基于此效果,可以在linux下进行使用,有效提升linux下的编译效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值