我目前正在研究一个连续集成服务器的良好设置,它将为几个Linux发行版构建各种C++应用程序.
我的主要问题是这里的其他用户如何处理Linux发行版之间系统库的差异?
虽然构建直接依赖项(如UI库和应用程序)可能相对容易,但如果必须每次都与应用程序一起构建glibc等"间接"依赖项,那么它们就会非常痛苦.因此,我正在考虑将实际构建执行移动到每个分发的单独虚拟机中,例如使用rlogin来运行命令.我的目标是防止构建机器库版本与目标分发版本中部署的版本之间的二进制不兼容.
这里有没有人有这样一个过程的经验,可以判断上述听起来是否像一个可行的方法?
为此,我们使用Jenkins(连续集成)和CMake(构建系统).Jenkins与Buildbot类似,即它也有buildmaster和buildslaves.目前我已经为4个不同的平台(FC8,FC10,FC12和Windows 7)设置了8个从站.我们构建了调试和发布二进制文件,因此我为每个平台和构建类型专用了一个slave.
对于像Qt和Boost这样的第三方库,我在每个平台上编译它们并将它们检查到一个单独的存储库中.
@esavard:我们使用CMake 2.8进行交叉编译,我没有使用minigw,但快速谷歌搜索表明它是可能的.以下是使用CMake和miniGW在Linux上交叉编译Windows的教程的链接.
我没有使用Buildbot,也无法对其功能发表评论,但我认为我应该提一下我们目前正在使用的替代方案.
希望这可以帮助.