基于Python的构建工具

18

最近我一直在寻找构建系统,但是我找不到符合我需求的。我认为现有的太低级了,我不喜欢bjamCMake的语法,而且它们仅适用于C/C++。同时,AntNAnt也过于面向某种语言。

我真的很喜欢使用实际编程语言的构建工具的想法,而Python非常适合。我一直在研究Sconswaf,而在这两个中,我发现waf最接近我想要的,但仍然需要大量的工作来支持计划中的所有内容,而我应该专注于编码。

以下是我所需要的:

  • 包含文件和库(用于C / C ++,Java,C#,Python)

  • 我想使用不同版本的编译器并支持不同的目标操作系统和CPU架构:

    • 对于C / C ++:MSVC,gcc(cygwin,mingw,linux版本),llvm-gcc,DragonEgg,Clang
    • 对于C#:.Net编译器,Mono(适用于Windows和Linux)-所有这些适用于不同的.Net版本(例如NAnt的:“net-2.0”,“net-3.5”,“net-4.0”,“mono-2.0” ,“mono-3.5”...)
  • 我想使用SWIG来支持C#,Python,Lua,Java等的封装程序生成。

  • 我想要的不仅仅是Debug和Release配置-就像Visual Studio非常容易地支持这一点。例如:使用MSVC构建的共享库项目,用于C#包装,使用mingw构建的共享库项目,用于Python包装,具有不同版本的发布版本-未优化,完全优化,生产,混淆等。

  • 我希望它考虑项目跟踪。解释:如果我有一个使用SWIG的共享库项目和一个加载该SWIG封装的不同C#项目,构建此解决方案/环境/工作空间将意味着将生成的共享库复制到C#项目的工作目录中,以及该共享库在其中使用的其他共享库和C#生成的包装器,然后构建C#项目

  • 可选项:在其他机器上进行网络测试部署

  • 可选项:我不是特别关心IDE项目文件生成(例如,像CMake为Visual Studio所做的那样),因为IDE版本和兼容性会发生变化,并且有许多很棒的IDE可用(例如适用于C/C++的CodeBlocks,CodeLite,Eclipse CDT - 所有这些都可以在U盘上移动,VS则不行),但是可选项是makefile集成- 一个调用此构建工具自己的makefile /脚本的makefile-看到类似于Scons的东西

看了我写的内容,我觉得我要求太多了:),但我认为这将服务于更多人

编辑:忘记说了,但我认为这暗示了使用Python:我希望这个工具跨平台

编辑:也许我正在寻找的尚未实现,但可能存在waf扩展来完成所有这些,或者是Scons


+1 很好的问题,我也正在寻找相同的答案! - helpermethod
什么是问题?如果有人知道这样的构建工具,支持所有请求的功能,我猜,但可能需要更清晰明了。 - unwind
@unwind:你说得对,我表达得很难懂,但是具体来说…… - costy.petrisor
1
我们公司使用Buildout作为构建工具和部署自动化工具,我们对它感到非常满意,尽管我们的需求不像你们那样高(我们不使用其他语言的共享库)。 - Attila O.
@unwind:我有一种感觉,除了Scons、waf和fabricate之外,没有其他成熟的东西,但我在想,可能有人制作了一个扩展来支持waf,并将其开源发布。 - costy.petrisor
@Attila Oláh:Buildout似乎很有趣,如果构建工具可以轻松使用,它就可以填补第一个“好用但不是必须”的功能。 - costy.petrisor
1个回答

3

我使用过Scons,它非常好用,因为它完全由Python代码编写,所以你可以做任何事情 - 如果有缺失的功能,你只需在Python中编写即可,非常简单。

一些人说它在处理大型项目时会出现问题,但是我没有运行非常大的项目,所以我不确定。


我发现 Scons 和 waf 的缺点是它们有所谓的默认编译器,选择一个似乎是一个隐藏选项。 - costy.petrisor
另外一件我认为它们都做得不好的事情是构建配置(就像我说的,超越了调试和发布的阶段)。 - costy.petrisor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接