我正在寻找一个构建系统(在ms窗口上工作),它可以很好地支持任务/目标的并行化(或者你称之为的任何东西)。更具体一点 - 在构建期间(在MS Windows机器上启动)我需要将源文件复制到许多不同的机器(不一定是运行Windows)并在每个机器上启动远程作业 - 我真的很喜欢一次在所有机器上执行此操作。有谁知道一个能够并行执行这样一个任务的构建系统。
根据我的Google搜索,目前可用的选项是:
-j开关make - 但我不知道nmake是否支持这个
- 一些自定义的nAnt任务
-msbuild对并行化有一些形式的支持 - 看起来与make类似(意思是你没有指定并行执行的操作,只需指定以这种方式构建东西会很好)
-fake(f#make)是用函数式编程语言编写的,已知它具有良好的并行化支持 - 但我在函数式编程领域并不是很熟练。
-TeamCity对这些事情有很大的支持,但这有点“重工具”(而且太贵了)
我可以探索的其他任何解决方案吗?
答案 0 :(得分:4)
MSBuild支持并行化。
http://www.hanselman.com/blog/FasterBuildsWithMSBuildUsingParallelBuildsAndMulticoreCPUs.aspx
http://blogs.msdn.com/b/msbuild/archive/2007/04/26/building-projects-in-parallel.aspx
Ant具有并行任务的概念 http://ant.apache.org/manual/Tasks/parallel.html
当然Make也有。
看看这篇文章也是......
How do I utilise all the cores for nmake?
我想这实际上取决于你对体面的定义。
答案 1 :(得分:1)
CruiseControl.NET支持并行构建,但您需要注意的是,并行构建仅在正在构建的项目不高度依赖于共享资源(如文件和其他项目)的情况下才能正常工作。构建过程通常会锁定其他并行构建可能尝试删除的文件。这可能会导致构建因“非代码”原因而失败。
答案 2 :(得分:1)
FastBuild声称是一个高度优化的系统,用于在多台计算机上为Windows和其他平台分发构建。我自己还没试过。
答案 3 :(得分:0)
我希望你可以用SCons做你想做的事,但是如果你不了解Python,可能不值得投入你的努力。如果你这样做,那就另当别论了。