c++ - C++ 项目的 cmake vs waf

我发现了类似的主题:What are the differences between Autotools, Cmake and Scons? ,但我的问题有点不同,我认为答案也可能是其他的。

我发现很多文章都说 waf 不稳定(API 更改),尚未准备好投入生产等(但所有这些文章都有 2 或 3 年的历史)。

如果我愿意,应该使用以下哪些构建工具:

  • 创建大型 C++ (11) 项目 - 假设是一个复杂的编译器
  • 与 LLVM 一起使用
  • 确保它灵活且易于使用
  • 确保它足够快
  • 在所有标准平台下编译(基础平台是Linux,但我也想在Windows和MacOSX下编译)

阅读了很多文章,我发现 Cmake 和 waf 是可用的“最佳”工具,但我没有使用它们,而且很难找到任何比较,这不是很偏颇(比如比较 scons作者)而且不是很老。真的

最佳答案

waf 几乎涵盖了您的所有要求...

  • API 更改:不是问题,因为 waf 应包含在源 tarball 中 (

  • 大项目:您可以将配置拆分到子目录中(可以继承上下文)。我在 C/C++/fortran77/fortran90/python/Cython 中处理过超过 10k 个文件的项目,包括 doxygen/sphinx 中的文档。

  • 灵 active 和易用性:您可以在 python (http://code.google.com/p/waf/wiki/AddingNewToolsToWaf) 中添加额外的模块

  • 快速:任务可以并行运行:http://www.retropaganda.info/~bohan/work/psycle/branches/bohan/wonderbuild/benchmarks/time.xml

  • 多平台:你可以在任何 Python 可用的地方运行 Waf,包括 Windows 和 MacO。 Waf 与 mscvc、gcc、icc 和其他编译器兼容。您可以制作视觉/eclipse 项目。

...但是 waf 似乎对 llvm 有问题:http://code.google.com/p/waf/issues/detail?id=1252

编辑:正如 Wojciech Danilo 所说,LLVM 问题已得到修复

https://stackoverflow.com/questions/14226717/

相关文章:

haskell - 由于 native 依赖项中的 "multiple definition"链接器

build - Xamarin:使用 NDK 构建的 .so

c# - Visual Studio 2010 构建错误 - 来自 HRESULT : 0x8003

build - Intellij IDEA 项目中的自定义构建步骤

c# - C# 中的友元程序集

java - 从相同的源代码构建可以产生功能不同的可执行文件吗?

maven - 是否有从 Maven 到 Bazel 的迁移路径?

perl - 有没有最简单的方法来构建 perl 包

scala - 如何构建独立的 scala 可执行文件

.net - IoC 容器,在编译时检查错误