我发现了类似的主题:What are the differences between Autotools, Cmake and Scons?,但我的问题有点其他,我认为答案也可能是其他问题。
我发现很多文章都说waf是unstalbe(API更改),尚未准备好生产等(但所有这些文章都是2或3年)。
如果我愿意,应该使用以下哪些构建工具:
阅读了很多文章,我发现了Cmake并且发现了“最好的”工具,但我没有使用它们,很难找到任何比较,这不是很偏颇(比如scons的比较)作者)并且不是很老。真的
答案 0 :(得分:14)
waf几乎涵盖了您的所有要求......
API更改:不是问题,因为waf应包含在源tarball中(< 100Ko)
大项目:您可以在子目录中拆分配置(可以继承上下文)。我已经在C / C ++ / fortran77 / fortran90 / python / Cython中处理了超过10k文件的项目,包括doxygen / sphinx中的文档。
灵活性和简单性:您可以添加额外的模块en python(http://code.google.com/p/waf/wiki/AddingNewToolsToWaf)
快:任务可以并行运行:http://www.retropaganda.info/~bohan/work/psycle/branches/bohan/wonderbuild/benchmarks/time.xml
multi plat-form:你可以运行Waf到处都有python,包括Windows和MacOs。 Waf与mscvc,gcc,icc和其他编译器兼容。您可以制作视觉/日食项目。
...但是waf似乎与llvm存在问题:http://code.google.com/p/waf/issues/detail?id=1252
答案 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 ..)。
我不能代表那里的所有其他工具。