【问题标题】:Python based build tools基于 Python 的构建工具
【发布时间】:2011-05-07 03:12:24
【问题描述】:

我最近一直在研究构建系统,但找不到任何接近我想要的东西。我认为太低端了,我不喜欢 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 很容易支持这个一样。示例:共享库项目为 C# 包装构建了 MSVC,为 Python 包装构建了 mingw,不同版本的发布版本 - 具有未优化、完全优化、生产、混淆......

  • 我希望它考虑项目跟踪。解释:如果我有一个使用 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 好问题,正在寻找完全相同的问题!
  • 问题是什么?如果有人知道这样的构建工具,我猜它支持所有请求的功能,但它可以更清楚。
  • @unwind:你说得很有道理,我解释得很努力,但具体
  • 我们公司使用Buildout作为构建工具和部署自动化工具,我们对此非常满意,尽管我们的需求不如您的高(我们不使用其他语言的共享库)。
  • @unwind:我感觉除了 Scons、waf 和 fabricate 之外没有其他成熟的东西,但我认为有人做了一个扩展名 waf 并将其发布为开源

标签: c++ python build build-process makefile


【解决方案1】:

我使用了 Scons,它很好,你真的可以用它做任何事情,因为只有 Python 代码,所以你用 Python 编写缺少的东西 - 这很容易。

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

【讨论】:

  • 我发现 Scons 和 waf 的唯一缺点是他们有一个所谓的默认编译器,选择一个似乎是一种隐藏选项
  • 如果你问我,他们都做得不好的另一件事是构建配置(就像我说的,超越了调试和发布的点)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 2020-08-25
相关资源
最近更新 更多