我目前正在建立一个新的软件项目,我想要一个自动构建系统。该项目有相当复杂的涉及C、C#。它还必须使用外部工具 (SWIG) 生成自动绑定(Python、PHP、Java、Ruby 等)。
该项目应该能够在 Linux、Windows 和可能的 Mac OS X 中构建和运行。
我研究过 CMake、autotools 和 waf。有人有什么建议吗?
我目前正在建立一个新的软件项目,我想要一个自动构建系统。该项目有相当复杂的涉及C、C#。它还必须使用外部工具 (SWIG) 生成自动绑定(Python、PHP、Java、Ruby 等)。
该项目应该能够在 Linux、Windows 和可能的 Mac OS X 中构建和运行。
我研究过 CMake、autotools 和 waf。有人有什么建议吗?
我建议您研究 Cruise Control 和/或 Cruise Control.NET 以实现自动化和持续集成。还要查看 NAnt 和 Ant 以了解实际的构建脚本功能。我到处都在使用这些,几乎每天都使用它们,而且我还没有遇到任何我无法完成的事情。有时我不得不制作自己的自定义 NAnt 任务......我在 C# 中做过......但仍然没有问题!
make 当然有能力做你所要求的一切。我会从这个开始;这是便携性的最佳选择。
如果你仍然发现你有可移植性问题,那么自动工具通常是一个合理的解决方案。除非我真的觉得我需要它们,否则我宁愿避开它们,这足以让我感到痛苦。
TeamCity,与 Cruise Control 相比,xml 配置更少。
其他人也用山药
但我对 CMake 非常满意。它可用于上述平台,并提供许多功能来编写非标准构建过程的完全自动化脚本(在支持的平台上)。
在我的例子中,它是在 C 语言中构建数字处理后端,它使用 Tcl 和 GSL 库与 Tcl/Tk 中的前端相结合,并在 Linux、MacOS 和 Win(MingW 和 Visual)上自动生成独立的可执行文件(starpack/tclkit)工作室)。
我个人使用 CMake + mingw + Qt4 来满足我所有的跨平台需求,但是我确信在 linux 上采用 CMake 来 swig/mono 和在 Windows 上采用 .net 是相当容易的。
谷歌构建系统(现在是开源的)是一个不错的选择:http ://bazel.io/