C++ 基于Python的构建工具

C++ 基于Python的构建工具,c++,python,build,build-process,makefile,C++,Python,Build,Build Process,Makefile,我最近一直在研究构建系统,但我找不到任何接近我想要的东西。我认为太低端了,我不喜欢 BJA< 和 CGuest的语法,我真的不喜欢它们只是针对C/C++。strong>Ant和NAnt也过于注重语言 我非常喜欢使用真正的编程语言的构建工具的想法,Python非常适合。我一直在研究SCON和,从这两个方面,我发现waf最接近我想要的,但我仍然看到,在我应该专注于编码的时候,为了支持计划中的每件事,必须做很多工作 以下是我想要的: 包含(库C/C++、爪哇、C、Python) 我希望使用不同版本

我最近一直在研究构建系统,但我找不到任何接近我想要的东西。我认为太低端了,我不喜欢<强> BJA< <强>和<强> CGuest的语法,我真的不喜欢它们只是针对C/C++。strong>Ant和NAnt也过于注重语言

我非常喜欢使用真正的编程语言的构建工具的想法,Python非常适合。我一直在研究SCON,从这两个方面,我发现waf最接近我想要的,但我仍然看到,在我应该专注于编码的时候,为了支持计划中的每件事,必须做很多工作

以下是我想要的:

    包含(库C/C++、爪哇、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等的包装器生成

  • 我想要的不仅仅是调试和发布配置,就像VisualStudio非常容易地支持这一点一样。示例:共享库项目为C#wrapping构建MSVC,为Python wrapping构建mingw,发布版本的不同版本-非优化、完全优化、生产、模糊化

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

  • 很好:部署在其他机器上进行网络测试

  • 很高兴拥有:我并不真正关心IDE项目文件的生成(例如,像CMake为Visual Studio所做的那样),因为IDE的版本和兼容性会发生变化,而且有很多优秀的IDE(例如,对于C/C++代码块、CodeLite、Eclipse CDT,所有这些都可以在thumb驱动器上移植,而不是,但是很高兴有一个makefile集成——一个简单地调用这个构建工具自己的makefile/脚本的makefile——在SCON中看到了类似的东西

翻看我写的东西,我想我问得太多了:),但我认为这比我更有用

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


编辑:也许我正在寻找的东西还没有实现,但它可能存在对所有这些的waf扩展,或者Scons可能是我使用的Scons,它很好,你可以用它做任何事情,因为只有Python代码,所以你用Python写的东西很容易


有人说,它在非常大的项目上有问题,我没有非常大的项目来运行它,所以我不知道。

+1个很好的问题,我在寻找完全相同的问题!问题是什么?如果有人知道这样一个构建工具,我想它支持所有要求的功能,但可以说得更清楚。@unwind:你说得有道理,我很难解释我自己,但我们公司也将其用作构建工具和部署自动化工具,我们对此非常满意,尽管我们的需求没有你的高(我们不使用其他语言的共享库)@unwind:我有一种感觉,除了Scons、waf和fabrize之外,没有其他成熟的东西,但我认为有人对waf进行了扩展,并将其公开发布。我发现Scons和waf唯一的缺点是,它们有一个所谓的默认编译器,选择一个似乎是一种隐藏选项,另一个似乎是另一个如果你问我的话,他们都做得很差的事情是构建配置(就像我说的,超出了调试和发布的范围)