有希望的替代品?

mik*_*511 74 build-automation makefile

多年来我一直在使用make和makefiles,虽然这个概念很合理,但实现还是有所不足.

有没有人找到任何好的替代方案,使不会使问题过于复杂?

小智 26

看看SCons.例如,Doom 3和Blender使用它.

  • SCons只是Python 2,在浪费了几天后,使用SCons编译用Python和C++编写的Python 3版本的项目,我建议人们远离.只需使用CMake,它就成为了C++的标准.或者,如果要使用基于Python的构建系统,请使用[Meson](http://mesonbuild.com/).它运行速度很快,并且正在积极开发,这对于SCons来说是不可能的. (4认同)
  • SCons 自 2017 年 9 月(上述评论撰写后 5 个月)开始支持 Python 3,并且自版本 4.0(2020 年 7 月)以来仅支持 Python 3。 (4认同)

Tod*_*lin 25

我有很多朋友发誓CMake进行跨平台开发:

http://www.cmake.org/

它是用于VTK(以及其他)的构建系统,它是一个具有跨平台Python,Tcl和Java绑定的C++库.我认为这可能是你用这么多功能找到的最简单的东西.

你总是可以尝试标准的autotools.如果您只在Unix上运行并且坚持使用C/C++,那么Automake文件很容易组合在一起.集成更复杂,而autotools远非最简单的系统.

  • CMake不只是生成makefile.CMake可以针对大量不同的编译器和平台生成大量不同类型的构建文件.就个人而言,我讨厌CMake,因为配置语法绝对令人作呕. (10认同)
  • 请注意,CMake仍然只生成makefile.因此,如果实现GNU Make的问题在于它无法做你想做的事情,那么CMake可能无法帮助你.或者autotools,就此而言. (7认同)

小智 15

一些GNOME项目已经迁移到了waf.

它是基于Python的,就像Scons一样,也是独立的 - 所以不需要其他开发人员安装你喜欢的构建工具,你只需将独立的构建脚本复制到你的项目中.


Cli*_*ach 12

我推荐使用Rake.这是我发现的最简单的工具.

我使用的其他好工具,如果Ruby不是你的东西,是:

  • AAP(Python)
  • SCons(Python)
  • Ant(Java,配置为XML,相当复杂)


sch*_*o72 12

doit是一个python工具.它基于构建工具的概念,但更通用.

  • 您可以定义任务/规则是如何更新的(不仅仅是检查时间戳,不需要目标文件)
  • 依赖关系可以由其他任务动态计算
  • 任务的动作可以是python函数或shell命令


Hot*_*hke 5

请注意ninjatup和影响的构建工具(2017年9月v1.8.2)redo

自版本2.8.8(2012年4月)起,构建文件生成器cmake(例如,用于Unix Makefile,Visual Studio,XCode,Eclipse CDT等)也可以生成ninja构建文件,并且afaik ninja现已成为cmake

它应该胜过该make工具(更好的依赖跟踪,也可以并行化)。

cmake是已经建立的工具。您以后总是可以选择构建工具,而无需修改配置文件。因此,如果将来开发出更好的构建,而cmake您将获得支持,则可以方便地切换到该构建。

请注意,对于c / c ++,由于通过预处理器包含的头文件(特别是在使用仅头文件的库,例如boosteigen时)有时会限制编译时间,因此有望被模块建议取代(在技术评论中) c ++ 11或最终在c ++ 1y中)。请查看此演示文稿以获取有关此问题的详细信息。

  • 值得注意的是,“ tup”取决于“ fuse”并运行保险丝内核扩展,据我所知,这表明维护人员很疯狂。`redo`两年没有更新。我会推荐“忍者”。 (3认同)

小智 5

我写了一个名为sake的工具,它试图让编写类似makefile 的东西变得非常容易阅读和编写。