我使用make和makefile已经很多年了,尽管这个概念很合理,但是实现还是有待改进的。
有没有人找到任何好的替代方法来解决这个问题呢?
我使用make和makefile已经很多年了,尽管这个概念很合理,但是实现还是有待改进的。
有没有人找到任何好的替代方法来解决这个问题呢?
scons
,luigi
(适应于shouldsee/luck
)snakemake
,,waf
。Java替代品很多,但是这个空间太小,无法全部写下来。
Answers:
签出SCons。例如,《毁灭战士3》和《 Blender》就利用了它。
doit是一个python工具。它基于构建工具的概念,但更为通用。
一些GNOME项目已迁移到waf。
它像Scons一样是基于Python的,但是也是独立的-因此,您无需将其他开发人员安装您喜欢的构建工具,只需将独立的构建脚本复制到项目中即可。
请注意ninja
受tup
和影响的构建工具(2017年9月v1.8.2)redo
。
自版本2.8.8(2012年4月)起,构建文件生成器cmake
(例如,用于Unix Makefile,Visual Studio,XCode,Eclipse CDT等)也可以生成ninja
构建文件,并且afaikninja
现已成为供以下人员使用的默认构建工具:cmake
。
它应该胜过该make
工具(更好的依赖跟踪,也可以并行化)。
cmake
是已经建立的工具。您以后总是可以选择构建工具,而无需修改配置文件。因此,如果将来开发出更好的构建,而cmake
您将获得支持,则可以方便地切换到该构建。
请注意,对于c / c ++,由于通过预处理器包含的头文件(特别是在使用仅头文件的库,例如boost&eigen时)有时会限制编译时间,因此有望被模块建议所取代(在技术评论中) c ++ 11或最终在c ++ 1y中)。请查看此演示文稿以获取有关此问题的详细信息。
tup
取决于fuse
并运行保险丝内核扩展,就我而言,这表明维护人员很疯狂。redo
两年未更新。我建议ninja
。
我写了一个叫做缘故的工具,试图使编写类似makefile的东西非常容易读写。
make
语法的对比。
这取决于您要执行的操作。如果所有你想要的是补充型靶依赖和命令调用,然后做实际上是任务的更好的工具之一。:-) Rake非常好,但在某些简单情况下可能很笨拙。Ant当然是冗长的城市,但是它对构建类似Java的语言(包括Scala和Groovy)提供了更好的支持。另外,Ant随处可见。这就是我使用它的主要原因。由于它在Windows上始终如一地工作,因此它实际上比Make跨平台更多。
如果您希望对类似Java的库进行依赖管理,则可以选择Maven,但我个人更喜欢Buildr。更快,更容易自定义(基于Rake)。不幸的是,它还没有Maven普及。
Ruby的make系统称为rake:http://rake.rubyforge.org/
看起来很有前途。
总有Ant:http : //ant.apache.org,我个人觉得很恐怖。但是,它是Java开发的实际标准。
在考虑了很多替代方案之后,我仍然更喜欢make。当您通过编译器或类似fastdep之类的方法自动生成依赖项时,没有太多要做。特别是,我不希望将构建脚本与实现语言联系在一起,并且当有更多可读的替代方法时,我不喜欢用XML编写内容。虽然可以使用公开通用语言的工具,但不能使用另一种解释语言(afaik)。 Make有什么问题?可能会吸引您关于脱离品牌的观点。
/艾伦
我不确定您在这里问的是正确的问题。
您是否经过简化制作?在这种情况下,您需要让一个非常熟悉make的人创建一系列(M | m)akefile,以简化您的问题。
还是您想研究基础技术?我们是否要强制执行代码设计中内置和强制执行的按合同设计类型的体系结构?或者可能是语言本身,例如Ada及其规范(接口)和主体(实现)的概念?
您所追求的方向肯定会影响该问题的潜在结果?
基本上,仅从真正发生变化的组件构建系统的新方法,而不是采用通过设计内置这种机制的新技术。
抱歉,这不是直接答案。只是想尝试让您评估您想朝哪个方向走。
干杯,
抢
make
太简单了。