什么构建系统对跨平台驱动程序,库和GUI构建有最好的支持?

时间:2022-02-23 12:12:17

What would be the best choice of build system for a more than one million line multi platform project, which produces drivers, libraries, command line tools, GUIs, and OS install packages for all the mainstream OSes, using both the GNU and Microsoft toolchains?

对于超过一百万行多平台项目,使用GNU和Microsoft工具链为所有主流操作系统生成驱动程序,库,命令行工具,GUI和操作系统安装包,构建系统的最佳选择是什么?

Our source code is mainly C, with Python, C# and GNU makefile, and a little C++ and bash. It resides mainly in one repository, but we push source code to various third parties all of whom have their source code code repositories. There is also some interest in keeping the build fast, which might involve splitting up the project.

我们的源代码主要是C语言,包括Python,C#和GNU makefile,还有一点C ++和bash。它主要驻留在一个存储库中,但我们将源代码推送到各个第三方,所有第三方都拥有其源代码存储库。还有一些兴趣是保持快速构建,这可能涉及拆分项目。

Currently we use a mixture of GNU make, bash, python and Microsoft's DDKBUILD. The main problems are that we are maintaining a complex set of scripts on top of make and would prefer to use third party (preferably open source) tools, and that cygwin is not proving to be robust on Windows (e.g. fork isn't always possible), and that our current build system does not build or install the toolchain so is vulnerable to tool chain version changes.

目前我们使用GNU make,bash,python和Microsoft的DDKBUILD混合使用。主要的问题是我们在make之上维护一组复杂的脚本,并且更喜欢使用第三方(最好是开源)工具,并且cygwin在Windows上并不是很健壮(例如,fork并不总是可行的) ),并且我们当前的构建系统不构建或安装工具链,因此容易受到工具链版本更改的影响。

6 个解决方案

#1


4  

I vote for CMake, as a meta-building tool that really rewrite KDE4 build system from scratch -- and make KDE4 now a cross-platform desktop that even running on WindowsCE!

我投票支持CMake,作为一个真正重写KDE4构建系统的元构建工具 - 并使KDE4成为一个甚至在WindowsCE上运行的跨平台桌面!

CMake is the carrier porting KDE4 to any OS on earth -- by generating Makefile( or vcprojs in Windows case) for about 40 OSes with relative toolchains!

CMake是将KDE4移植到地球上任何操作系统的载体 - 通过生成具有相关工具链的大约40个操作系统的Makefile(或Windows中的vcprojs)!

#2


1  

JetBrains TeamCity works very well in general, so should be worth having on the eval list.

JetBrains TeamCity总体上运作良好,因此值得在评估列表中使用。

ThoughtWorks Cruise is also in the same space. While its v1, it comes from a stable that's been around for a while.

ThoughtWorks Cruise也在同一个领域。虽然它的v1,它来自一个已经存在一段时间的稳定。

There's nothing about Team Foundation Server that would make necessarily count it out for your situation, but out of the box it might be more MS-shop centric that the other two I've mentioned.

团队基础服务器没有什么可以根据你的情况计算出来,但开箱即用的可能更多以MS-shop为中心,我提到的其他两个。

As a general comment, with the level of variety you have, you definitely want to trial whatever it is you want to use - just because something is supported as a tick on the box doesnt mean its going to suit what oyu're looking for.

作为一般性评论,随着你所拥有的多样性水平,你肯定想要尝试任何你想要使用的东西 - 只是因为支持某些东西作为方框上的勾选并不意味着它适合oyu正在寻找的东西。

#3


1  

Dickson,

Is your build mostly monolithic or do you want to build some libraries separately and assemble them into the larger application? If inter-project dependencies are a big deal, your choices become limited quickly. AnthillPro does it well, and I think TeamCity has some Ivy integration support. From what you're saying, it sounds like this is not an absolute need, but might be helpful in speeding the build. It's certainly a strategy that we've seen a number of teams execute effectively.

您的构建主要是单片式还是您想要单独构建一些库并将它们组装到更大的应用程序中?如果项目间的依赖关系很重要,那么您的选择会很快受到限制。 AnthillPro做得很好,我认为TeamCity有一些常春藤集成支持。从你所说的,听起来这不是绝对的需要,但可能有助于加快构建速度。这当然是我们看到一些团队有效执行的策略。

Since you're looking at cross-platform (I assume multiple machine) builds, most of the open source tools other than Hudson are ruled out.

由于您正在考虑跨平台(我假设多个机器)构建,因此除了Hudson之外的大多数开源工具都被排除在外。

A build server comparison matrix is hosted by our friends at Thoughtworks here: confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

构建服务器比较矩阵由我们的Thoughtworks朋友在这里托管:confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

Good luck.

#4


1  

You should have CMake on your list of alternatives to investigate. CMake is a meta-tool, i.e. it generates the input to the build-tool of your choice (GNU make, Visual Studio, etc.). I can recommend it strongly.

你应该在你的调查替代品清单上有CMake。 CMake是一个元工具,即它生成您选择的构建工具(GNU make,Visual Studio等)的输入。我可以强烈推荐它。

#5


1  

You may want to look at Cruise. It is built on Java so it will run on any platform that supports that. You can also have multiple build agents on different machines that can perform the different tasks on the different platforms. Thoughtworks is still building it out so some of the functionality is lacking, but it may be a a good option since you are looking for true cross-platform capabilities.

你可能想看看克鲁斯。它基于Java构建,因此它可以在任何支持它的平台上运行。您还可以在不同的计算机上拥有多个构建代理,这些代理可以在不同平台上执行不同的任务。 Thoughtworks仍然在构建它,因此缺少一些功能,但它可能是一个很好的选择,因为您正在寻找真正的跨平台功能。

#6


1  

SCons is a cross-platform build system implemented in Python. We use it to build our code on three platforms. It can automatically detect your build tools but you can also put arbitrary Python code in your build script. It also lets you separate your environment setup from description of your project structure, a great feature for reuse of your buidl scripts in different environments. Besides building your project directly, it can also generate Visual Studio project files.

SCons是一个用Python实现的跨平台构建系统。我们使用它在三个平台上构建我们的代码。它可以自动检测您的构建工具,但您也可以在构建脚本中放置任意Python代码。它还允许您将环境设置与项目结构的描述分开,这是在不同环境中重用buidl脚本的一个很好的功能。除了直接构建项目外,它还可以生成Visual Studio项目文件。

#1


4  

I vote for CMake, as a meta-building tool that really rewrite KDE4 build system from scratch -- and make KDE4 now a cross-platform desktop that even running on WindowsCE!

我投票支持CMake,作为一个真正重写KDE4构建系统的元构建工具 - 并使KDE4成为一个甚至在WindowsCE上运行的跨平台桌面!

CMake is the carrier porting KDE4 to any OS on earth -- by generating Makefile( or vcprojs in Windows case) for about 40 OSes with relative toolchains!

CMake是将KDE4移植到地球上任何操作系统的载体 - 通过生成具有相关工具链的大约40个操作系统的Makefile(或Windows中的vcprojs)!

#2


1  

JetBrains TeamCity works very well in general, so should be worth having on the eval list.

JetBrains TeamCity总体上运作良好,因此值得在评估列表中使用。

ThoughtWorks Cruise is also in the same space. While its v1, it comes from a stable that's been around for a while.

ThoughtWorks Cruise也在同一个领域。虽然它的v1,它来自一个已经存在一段时间的稳定。

There's nothing about Team Foundation Server that would make necessarily count it out for your situation, but out of the box it might be more MS-shop centric that the other two I've mentioned.

团队基础服务器没有什么可以根据你的情况计算出来,但开箱即用的可能更多以MS-shop为中心,我提到的其他两个。

As a general comment, with the level of variety you have, you definitely want to trial whatever it is you want to use - just because something is supported as a tick on the box doesnt mean its going to suit what oyu're looking for.

作为一般性评论,随着你所拥有的多样性水平,你肯定想要尝试任何你想要使用的东西 - 只是因为支持某些东西作为方框上的勾选并不意味着它适合oyu正在寻找的东西。

#3


1  

Dickson,

Is your build mostly monolithic or do you want to build some libraries separately and assemble them into the larger application? If inter-project dependencies are a big deal, your choices become limited quickly. AnthillPro does it well, and I think TeamCity has some Ivy integration support. From what you're saying, it sounds like this is not an absolute need, but might be helpful in speeding the build. It's certainly a strategy that we've seen a number of teams execute effectively.

您的构建主要是单片式还是您想要单独构建一些库并将它们组装到更大的应用程序中?如果项目间的依赖关系很重要,那么您的选择会很快受到限制。 AnthillPro做得很好,我认为TeamCity有一些常春藤集成支持。从你所说的,听起来这不是绝对的需要,但可能有助于加快构建速度。这当然是我们看到一些团队有效执行的策略。

Since you're looking at cross-platform (I assume multiple machine) builds, most of the open source tools other than Hudson are ruled out.

由于您正在考虑跨平台(我假设多个机器)构建,因此除了Hudson之外的大多数开源工具都被排除在外。

A build server comparison matrix is hosted by our friends at Thoughtworks here: confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

构建服务器比较矩阵由我们的Thoughtworks朋友在这里托管:confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix

Good luck.

#4


1  

You should have CMake on your list of alternatives to investigate. CMake is a meta-tool, i.e. it generates the input to the build-tool of your choice (GNU make, Visual Studio, etc.). I can recommend it strongly.

你应该在你的调查替代品清单上有CMake。 CMake是一个元工具,即它生成您选择的构建工具(GNU make,Visual Studio等)的输入。我可以强烈推荐它。

#5


1  

You may want to look at Cruise. It is built on Java so it will run on any platform that supports that. You can also have multiple build agents on different machines that can perform the different tasks on the different platforms. Thoughtworks is still building it out so some of the functionality is lacking, but it may be a a good option since you are looking for true cross-platform capabilities.

你可能想看看克鲁斯。它基于Java构建,因此它可以在任何支持它的平台上运行。您还可以在不同的计算机上拥有多个构建代理,这些代理可以在不同平台上执行不同的任务。 Thoughtworks仍然在构建它,因此缺少一些功能,但它可能是一个很好的选择,因为您正在寻找真正的跨平台功能。

#6


1  

SCons is a cross-platform build system implemented in Python. We use it to build our code on three platforms. It can automatically detect your build tools but you can also put arbitrary Python code in your build script. It also lets you separate your environment setup from description of your project structure, a great feature for reuse of your buidl scripts in different environments. Besides building your project directly, it can also generate Visual Studio project files.

SCons是一个用Python实现的跨平台构建系统。我们使用它在三个平台上构建我们的代码。它可以自动检测您的构建工具,但您也可以在构建脚本中放置任意Python代码。它还允许您将环境设置与项目结构的描述分开,这是在不同环境中重用buidl脚本的一个很好的功能。除了直接构建项目外,它还可以生成Visual Studio项目文件。