首页 / 知识
关于构建自动化:有前途的替代方案吗?
2023-04-15 14:19:00

Promising alternatives to make?
我已经使用了make和makefile很多年了,尽管这个概念
有没有人发现任何好的替代方法,而不会使其过于复杂 我有很多朋友发誓CMake进行跨平台开发: http://www.cmake.org/ 这是用于VTK的构建系统(除其他外),这是一个具有跨平台Python,Tcl和Java绑定的C ++库。我认为,使用这么多功能,这可能是最简单的事情了。 您可以随时尝试使用标准的自动工具。如果仅在Unix上运行并且坚持使用C / C ++,则Automake文件很容易组合在一起。集成更加复杂,并且自动工具远非最简单的系统。 查看SCons。例如,《毁灭战士3》和《 Blender》就利用了它。 一些GNOME项目已迁移到waf。 它像Scons一样是基于Python的,但也是独立的-因此,您无需将其他开发人员安装您喜欢的构建工具,只需将独立的构建脚本复制到项目中即可。 doit是一个python工具。它基于构建工具的概念,但更为通用。
我建议使用Rake。这是我找到的最简单的工具。 但是,如果您不是Ruby,那么我使用过的其他好工具是:
请注意受
自版本2.8.8(2012年4月)起,构建文件生成器
它应该胜过
请注意,对于c / c ++,由于通过预处理器包含的标头(特别是在使用仅标头的库,例如boost&eigen时)有时会限制编译时间,因此有望被模块建议取代(在技术评论中) c ++ 11或最终在c ++ 1y中)。请查看此演示文稿以获取有关此问题的详细信息。 我写了一个叫做缘故的工具,试图使编写类似makefile的东西非常容易阅读和编写。 这取决于您要执行的操作。如果您只需要make样式的目标依赖项和命令调用,那么Make实际上是完成任务的更好工具之一。 :-) Rake非常好,但在某些简单情况下可能很笨拙。 Ant当然是冗长的城市,但是它对构建类似Java的语言(包括Scala和Groovy)提供了更好的支持。另外,Ant随处可见。这就是我使用它的主要原因。由于它在Windows上始终如一地工作,因此它实际上比Make跨平台更多。 如果您希望对类似Java的库进行依赖管理,则可以选择Maven,但我个人更喜欢Buildr。更快,更容易自定义(基于Rake)。不幸的是,它还没有Maven普及。 在考虑了很多替代方案之后,我仍然更喜欢make。当您通过编译器或类似fastdep的方式自动生成依赖项时,没有太多要做。特别是,我不希望将构建脚本与实现语言联系在一起,并且当有更多可读的替代方法时,我不喜欢用XML编写内容。虽然可以使用公开通用语言的工具,但不能使用另一种解释语言(afaik)。 Make有什么问题?可能会吸引您关于脱离品牌的观点。 /艾伦 Ruby的make系统称为rake:http://rake.rubyforge.org/ 看起来很有前途。 总有Ant:http://ant.apache.org,我个人觉得这很可怕。但是,它是Java开发的实际标准。 我已经看到RTDA的FlowTracer是另一个很好的选择,我已经看到它在大规模环境(成千上万的工作)中用于商业用途:http://www.rtda.com/flowtracer-design-flow-infrastructure-software 它具有一个GUI,该GUI显示依赖关系图,其中带有用于作业的颜色编码框和用于文件的椭圆形框。当作业和文件数量增加时,像FlowTracer这样的基于GUI的工具就非常重要。 初始设置成本高于Make。有一条学习曲线可用于设置您的第一个流程。之后,它变得更快。 我不确定您在这里问的是正确的问题。 您是否经过简化?在这种情况下,您需要找一个非常熟悉make的人来创建一系列(M | m)akefile,以简化您的问题。 还是您想研究基础技术?我们是否要强制执行代码设计中内置和强制执行的按合同设计类型的体系结构?或者可能是语言本身,例如Ada及其规范(接口)和主体(实现)的概念? 您所追求的方向肯定会影响该问题的潜在结果? 基本上,新的方法是仅从真正发生变化的组件构建系统,而不是采用具有通过设计内置这种机制的新技术。 抱歉,这不是直接答案。只是想尝试让您评估您想朝哪个方向走。 干杯, 抢 |
最新内容
相关内容
linux系统查版本命令?
linux系统查版本命令?,系统,信息,名称,状态,设备,命令,软件,工具,版本,终端,linux下如何查看grub版本号1、首先连接上Linux主机,如图所示,使Linu强大系统linux命令?
强大系统linux命令?,系统,工作,地址,信息,命令,管理,名称,位置,目录,控制台,linux操作系统教程:[2]linux命令选项command [options] [argument退出linux系统命令?
退出linux系统命令?,系统,状态,工作,档案,命令,电脑,工具,基础,信息,时间,linux怎么关闭系统?shutdown shutdown命令用于关闭Linux系统。有些linux系统cmp命令?
linux系统cmp命令?,系统,工作,标准,信息,命令,一致,目录,指令,功能,文件,请问在LINUX中,内部命令和外部命令分别是什么?1、内部命令是指shelllinux系统命令行工具?
linux系统命令行工具?,工具,系统,工作,状态,命令,地方,标准,信息,环境,基础,Linux:Python编写Linux自定义命令工具state是命令执行结果的状态,rlinux系统进入后命令?
linux系统进入后命令?,系统,密码,工程,电脑,位置,软件,传播,代码,工作,一致,linux系统安装完成后第一次进入的是什么界面?这个是Linux系统的登linux系统刷新命令?
linux系统刷新命令?,系统,工具,情况,最新,单位,工作,管理,信息,软件,服务,Linux系统中进行磁盘管理的常用命令有哪些查看磁盘空间 -df df命令linux系统sed命令?
linux系统sed命令?,资料,系统,工作,跨行,代理,时间,简介,命令,文件,都会,Linux下sed命令使用全解析sed命令行格式为:sed [-nefri] ‘command’linux系统维护命令?
linux系统维护命令?,系统,工作,信息,策略,发展,网络,时间,情况,工具,服务,系统加固之Linux安全加固1、修改系统密码;查看系统是否已设定了正确Ulinux系统下载的命令?
linux系统下载的命令?,系统,工作,管理,工具,软件,网络,信息,命令,目录,文件,linux系统怎样下载迅雷的资源1、通过浏览器下载:点击左下角的符号,linux系统安装命令集?
linux系统安装命令集?,系统,软件,工作,工具,在线,信息,数据,官方网站,基础,官网,linux系统yum安装小猫小狗的命令1、这里以centos7 linux系统linux看系统用户命令?
linux看系统用户命令?,系统,信息,密码,命令,服务,名称,网络,情况,软件,工具,Linux查看所有用户用什么命令输入“cat /etc/passwd”命令查看所