cmake vs waf for C ++项目

时间:2013-01-09 01:01:50

标签: c++ build cmake build-automation waf

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

我发现很多文章都说waf是unstalbe(API更改),尚未准备好生产等(但所有这些文章都是2或3年)。

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

  • 创建大型C ++(11)项目 - 比方说一个复杂的编译器
  • 与LLVM一起使用
  • 确保它灵活易用
  • 确保它会快速实现
  • 在所有标准平台下编译(基础平台是Linux,但我想在Windows和MacOSX下编译)

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

2 个答案:

答案 0 :(得分:14)

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

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

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

答案 1 :(得分:3)

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

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

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

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

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