繁体   English   中英

在一个C ++应用程序中嵌入Rake?还是有LUA湖吗?

[英]Embedding Rake in a C++ app? Or is there a Lake for LUA?

我发现了一些关于在一个C ++应用程序中嵌入Ruby的问题。 几乎所有最高投票的答案都建议使用Lua。

考虑到我想到的项目可以通过Rake中已经表达的语法(它是一个规则引擎)得到更好的服务,是否有任何简单的方法将Rake嵌入到C ++应用程序中,或者Lua是否有类似Rake的模块?

澄清:如果可能的话,我希望这是一个独立的应用程序。 它应该具有最少的先决条件,因为它将运行在一个相当简单的(Windows)操作系统上。

有许多构建系统可以使用Lua,主要基于Lua,甚至可以在Lua中实现。 其中一些列在Lua用户的Wiki上

在wiki中列出的那些中, Bou明显受到了Rake的启发。 它的作者观察到,在项目启动时,“湖”这个名称已经被用于另一个构建系统,但没有提供链接,所以我不知道那个人可能与之相关。 从那时起,Bou已经改名为Lake并搬到了新家。

Lake是Lua社区的定期撰稿人,史蒂夫·多诺万。 就像Bou一样,它是在几乎纯粹的Lua中实现的(它确实依赖于LuaFileSystem来进行文件系统访问)。 它不是用作创建Makefile或IDE项目文件的过滤器,而是直接根据Lua编写的项目描述驱动编译器。 构建项目以DSL(特定于域的语言)描述,包括访问所有Lua以处理特殊情况。

Lua的“官方” 二进制版本都来自一个名为tecmake的系统,起源于Tecgraf,就像Lua本身一样。 Tecmake是在make之上实现的,它通过一个包装shell脚本和一组实现其约定的通用Makefile规则来实现。 它适用于他们,但我个人从来没有能够让它在我的系统上运行。 目前正在努力使LuaBinaries构建远离techmake的怪癖。

LuaRocks使用Lua来描述构建要求,几乎完全用Lua编写,旨在与分布式应用程序集成,以便应用程序可以自我更新。 据我了解,LuaRocks的目标之一是使项目构建能够使用他们独立于平台的“摇滚”文件,并且使用LuaRocks构建个人项目肯定会使其更容易发布以便以后更广泛地分发。

作为后备,总是可以使用Lua作为扩展makefile驱动的构建的另一个工具。 我已经以这种方式使用它来预处理我可能委托给awk或perl的任务,例如从当前化石修订版收集细节到我的构建项目中。

更新:

随着时间的推移,知识得到改善。 正如Victor T在评论中观察到的那样,Steve's Lake实际上是同名的Bou项目。 显然,对“Lake”这个名字的反对意见已经消失了,我根本没有注意到它们是同一个工具。 我已经编辑了原始答案及其更新,以更好地反映我目前的理解。

至少有两个不同的项目称为“Lua Make”(你可以使用Google),还有一些与Lua Rocks相关的构建系统。 目前尚不清楚Lua Rocks是否会有任何用处,但另外两个似乎值得一试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM