14

我发现了类似的主题:Autotools、Cmake 和 Scons 之间有什么区别?,但我的问题有点不同,我认为答案也可能是其他的。

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

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

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

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

4

2 回答 2

16

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

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

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

于 2013-03-12T16:30:49.077 回答
4

我目前正在通过 C++11 和 LLVM 将 CMake 用于我自己的语言实现。

我喜欢 CMake,因为它易于使用的语法。LLVM 可以使用简单的“load_package”命令加载。之后,您可以使用所需的所有头文件和库。CMake 允许子脚本从父脚本继承变量。所以你不需要在每个子目录中设置变量和加载包。

C++11 支持取决于您要使用的编译器。总而言之,CMake 只是一个用于创建“真实”构建脚本的布局。

当你使用 make 时,你可以使用 make 的 --jobs=N 来加速多核平台上的编译。在 Windows 上,您可以生成 Visual Studio 2012 项目文件并使用 Microsoft 的构建系统并使用他们的构建作业来加快编译过程。您应该始终为构建文件(myproject/build 或其他东西)创建一个子文件夹。这样你就可以保持你的源代码树干净(cd build; cmake ..; cd ..)。

我不能代表所有其他工具。

于 2013-01-09T03:28:19.480 回答