3

Ruby を C++ アプリに埋め込むことに関して、いくつかの質問を見つけました。上位投票の回答のほとんどすべてが、代わりに Lua を使用することを提案しています。

私が考えているプロジェクトは、Rake で既に表現されている文法 (ルール エンジンです) によってより適切に処理されると仮定すると、Rake を C++ アプリに埋め込む簡単な方法はありますか、または Lua 用の Rake のようなモジュールはありますか?

明確にするために: 可能であれば、これを自己完結型のアプリにしたいと考えています。必要最小限の (Windows) OS で実行されるため、最小限の前提条件が必要です。

4

2 に答える 2

4

Lua に強く基づいているか、Lua で実装されている、Lua を使用できるビルド システムが多数あります。それらのいくつかはLua User's Wikiにリストされています。

wiki にリストされているもののうち、Bouは明らかに Rake に触発されたものです。その作者は、プロジェクトが開始された時点で「lake」という名前が別のビルドシステムで既に使用されていたことを観察しましたが、リンクを提供しなかったため、それが何に関連していたのかわかりません. それ以来、ボウはレイクと改名し、新しい家に引っ越しました。

Lake は、Lua コミュニティへの定期的な貢献者である steve donovan によって作成されました。Bou がそうであったように、ほぼ純粋な Lua で実装されています (ファイル システムへのアクセスはLuaFileSystemに依存しています)。Makefile または IDE プロジェクト ファイルを作成するためのフィルターとして機能するのではなく、Lua で記述されたプロジェクトの説明に基づいてコンパイラを直接駆動します。ビルド プロジェクトは、特殊なケースを処理するためにすべての Lua へのアクセスを含む DSL (ドメイン固有言語) で記述されます。

Luaの「公式」バイナリ リリースはすべて、Lua 自体と同様に Tecgraf に由来するtecmakeと呼ばれるシステムから提供されます。Tecmake は、ラッピング シェル スクリプトとその規則を実装する Makefile ルールの共通セットを介して、make の上に実装されます。彼らにとってはうまく機能しますが、個人的には、システムで実行することができませんでした。LuaBinaries ビルドを techmake の癖から遠ざけるための作業が進行中です。

LuaRocksは Lua を使用してビルド要件を記述し、ほぼすべてが Lua で記述されており、アプリケーションが自己更新できるように分散アプリケーションと統合することを目的としています。私が理解しているように、LuaRocks の目標の 1 つは、プロジェクトの構築でプラットフォームに依存しない「ロック」ファイルを使用できるようにすることであり、LuaRocks を使用して個人的なプロジェクトを構築すると、後でより広く配布するために公開することが容易になります。

また、フォールバックとして、メイクファイル駆動型ビルドを拡張するためのさらに別のツールとして Lua を使用することも常に可能です。現在の化石リビジョンからビルドされたプロジェクトに詳細を収集するなど、そうでなければ awk や perl に委任する可能性のあるタスクを前処理するために、この方法を使用しました。

アップデート:

そして時間が経つにつれて、知識は向上します。コメントでビクター Tが観察したように、スティーブの湖は実際にはボウと名付けられた同じプロジェクトです。どうやら「Lake」という名前に対する異論は薄れ、私はそれらがまったく同じツールであることにまったく気付きませんでした。元の回答とその更新を編集して、現在の理解をより反映させました。

于 2009-05-20T21:20:27.190 に答える