2009-05-19 6 views
2

J'ai trouvé quelques questions sur l'intégration de Ruby dans une application C++. Presque toutes les réponses les mieux votées suggèrent d'utiliser Lua à la place. Étant donné qu'un projet que j'ai à l'esprit serait mieux servi par la grammaire déjà exprimée dans Rake (c'est un moteur de règles), y a-t-il un moyen facile d'intégrer Rake dans une application C++ ou y at-il un Rake? module pour Lua?Intégrer Rake dans une application C++? Ou y a-t-il un lac pour LUA?

Pour clarifier: Je veux que ce soit une application autonome, si possible. Il devrait avoir un minimum de pré-requis, car il fonctionnera sur un système d'exploitation (Windows) assez simple.

Répondre

3

Il existe un certain nombre de systèmes de construction qui peuvent utiliser Lua, basés fortement sur Lua ou même implémentés dans Lua. Certains d'entre eux sont répertoriés au Lua User's Wiki.

Parmi ceux listés sur le wiki, Bou a été explicitement inspiré par Rake. Son auteur a observé que le nom «lac» était déjà utilisé pour un autre système de construction au moment où le projet a été lancé, mais il n'a pas fourni de lien, donc je n'ai aucune idée de ce à quoi il a pu être associé. Depuis ce temps, Bou a été renommé Lake et a déménagé dans une nouvelle maison.

Lake est la création d'un collaborateur régulier de la communauté Lua, steve donovan. Comme Bou était, il est implémenté dans Lua presque pur (cela dépend de LuaFileSystem pour l'accès au système de fichiers). Plutôt que d'agir comme un filtre pour créer des fichiers de projet Makefile ou IDE, il pilote les compilateurs directement en fonction des descriptions de projet écrites en Lua. Les projets de construction sont décrits dans un DSL (langage spécifique au domaine) qui inclut l'accès à tous les Lua pour gérer des cas spéciaux.

Les "officiels" binary releases de Lua proviennent tous d'un système appelé tecmake provenant de Tecgraf comme Lua lui-même. Tecmake est implémenté sur make, via un script shell et un ensemble commun de règles Makefile implémentant ses conventions. Cela fonctionne bien pour eux, mais personnellement, je n'ai jamais réussi à le faire fonctionner sur mon système. Il y a du travail en cours pour déplacer les constructions de LuaBinaries loin des bizarreries de techmake.

LuaRocks utilise Lua pour décrire les exigences de construction, est écrit presque entièrement en Lua, et est destiné à être intégré à une application distribuée afin que les applications puissent être mises à jour automatiquement. Si je comprends bien, l'un des objectifs de LuaRocks est de permettre à la création de projets d'utiliser leurs fichiers «rock» indépendants de la plate-forme, et utiliser LuaRocks pour créer un projet personnel le rendrait plus facile à publier plus tard.

Et comme solution de repli, il est toujours possible d'utiliser Lua comme un autre outil pour étendre une construction pilotée par un makefile. Je l'ai utilisé de cette façon pour les tâches de pré-traitement que j'aurais autrement déléguées à awk ou perl, comme la collecte des détails de la révision actuelle fossil dans mon projet construit.

Mise à jour:

Et comme le temps passe, l'amélioration des connaissances. Comme observé par Victor T dans un commentaire, Steve's Lake est en fait le même projet qui a été nommé Bou. Apparemment, toutes les objections au nom de "Lake" s'étaient évanouies, et je n'ai tout simplement pas remarqué qu'il s'agissait d'un seul et même outil.J'ai modifié la réponse originale et sa mise à jour pour mieux refléter ma compréhension actuelle.

+0

Je pense que 'Bou' et 'Lake' se réfèrent au même projet. On dirait que Steve Donovan l'a plus tard rebaptisé plus convenablement 'Lake'. – greatwolf

+1

@Victor, j'ai mis à jour ma réponse. Tu as raison, je ne sais pas comment j'ai raté ça à l'époque. – RBerteig

1

Il existe au moins deux projets différents appelés "Lua Make" (que vous pouvez utiliser pour Google), et il existe également une sorte de système de construction associé à Lua Rocks. Il n'est pas clair si le truc de Lua Rocks sera utile, mais les deux autres semblent valoir la peine d'être vérifiés.

Questions connexes