c++ - 基于 Python 的构建工具

标签 c++ python build build-process makefile

我最近一直在研究构建系统,但找不到任何接近我想要的东西。我认为太低端了,我不喜欢 bjamCMake 的语法,我真的不喜欢它们只适用于 C/C++。 AntNAnt 也过于面向语言。

我真的很喜欢使用真正的编程语言和 Python 非常适合的构建工具的想法。我一直在看 Scons waf ,从这两个中我发现 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 等的包装器生成。

  • 我想要的不仅仅是调试和发布配置——就像 Visual Studio 很容易支持这个一样。示例:共享库项目为 C# 包装构建了 MSVC,为 Python 包装构建了 mingw,不同版本的发布版本 - 具有未优化、完全优化、生产、混淆......

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

  • 锦上添花:部署在其他机器上进行网络测试

  • 非常有用:我并不真正关心 IDE 项目文件的生成(例如,像 CMake 对 Visual Studio 所做的那样),因为 IDE 版本和兼容性会发生变化,而且那里有很多不错的 IDE (例如,对于 C/C++ CodeBlocks、CodeLite、Eclipse CDT - 所有这些都可以在拇指驱动器上移植,VS 不是),但最好的方式是 makefile 集成 - 一个简单地调用此构建工具自己的 makefile 的 makefile/脚本 - 看到 Scons 的类似内容

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

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

编辑:也许我正在寻找的还没有实现,但它可能会退出所有这些的 waf 扩展,或者可能是 Scons

最佳答案

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

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

关于c++ - 基于 Python 的构建工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4132066/

相关文章:

c++ - 等效于 C++ iostream 的 StreamReader.ReadToEnd()

c++ - 为什么这个基本的 cin 会阻止我的程序编译?

python - 如何在 for 循环中部分匹配 Python 中的列表?

c - 如何正确链接 KBuild Makefile 以在内核模块中构建子文件夹

C++整数除法

java - 调色板的连续颜色

python Spark 替代非常大的数据爆炸

python - 部署Python 3应用程序Heroku : Crashing

java - Gradle:使构建版本可用于 Java

c++ - 如何使用 VC++ 将此脚本合并到构建过程中