【问题标题】:Embedding Rake in a C++ app? Or is there a Lake for LUA?在 C++ 应用程序中嵌入 Rake?或者有 LUA 的湖吗?
【发布时间】:2010-10-27 08:01:44
【问题描述】:

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

鉴于我心目中的一个项目会更好地使用 Rake 中已经表达的语法(它是一个规则引擎),是否有任何简单的方法可以将 Rake 嵌入到 C++ 应用程序中,或者是否有类似 Rake 的模块对于 Lua?

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

【问题讨论】:

    标签: c++ ruby lua rake


    【解决方案1】:

    有许多可以使用 Lua 的构建系统,它们强烈地基于 Lua,甚至在 Lua 中实现。其中一些列在Lua User's Wiki

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

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

    Lua 的“官方”binary releases 都来自一个名为tecmake 的系统,该系统与 Lua 本身一样起源于 Tecgraf。 Tecmake 是在 make 之上实现的,通过一个包装 shell 脚本和一组通用的 Makefile 规则来实现其约定。它对他们来说效果很好,但就我个人而言,我从来没有能够让它在我的系统上运行。正在努力使 LuaBinaries 构建摆脱 techmake 的怪癖。

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

    作为一种备用方法,始终可以使用 Lua 作为另一种工具来扩展 makefile 驱动的构建。我以这种方式将它用于预处理任务,否则我可能会委托给 awk 或 perl,例如从当前的 fossil 修订中收集详细信息到我构建的项目中。

    更新:

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

    【讨论】:

    • 我认为“Bou”和“Lake”指的是同一个项目。看起来史蒂夫·多诺万后来将其更名为“湖”。
    • @Victor,我已经更新了我的答案。你是对的,我不知道我当时是怎么错过的。
    【解决方案2】:

    至少有两个不同的项目叫做“Lua Make”(你可以用谷歌搜索),还有一些与Lua Rocks 相关的构建系统。目前尚不清楚 Lua Rocks 是否有用,但其他两个似乎值得一试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 2011-06-15
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 2014-07-03
      相关资源
      最近更新 更多