【发布时间】:2011-05-07 03:12:24
【问题描述】:
我最近一直在研究构建系统,但找不到任何接近我想要的东西。我认为太低端了,我不喜欢 bjam 和 CMake 的语法,我真的不喜欢它们仅适用于 C/C++。 Ant 和 NAnt 也过于面向语言。
我真的很喜欢使用真正的编程语言和 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 等生成包装器。
我想要的不仅仅是 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