Встраивать Rake в приложение C ++? Или есть озеро для LUA? - PullRequest
3 голосов
/ 19 мая 2009

Я нашел пару вопросов о встраивании Ruby в приложение C ++. Почти все ответы с наибольшим количеством голосов предлагают вместо этого использовать Lua.

Учитывая, что проект, который я имею в виду, будет лучше обслуживаться грамматикой, уже выраженной в Rake (это механизм правил), есть ли простой способ встроить Rake в приложение C ++, или есть модуль, похожий на Rake для Луа?

Чтобы уточнить: я хочу, чтобы это было автономное приложение, если это возможно. Он должен иметь минимальные предварительные требования, потому что он будет работать на довольно скудной (Windows) ОС.

Ответы [ 2 ]

4 голосов
/ 21 мая 2009

Существует ряд систем сборки, которые могут использовать Lua, основанные на Lua или даже реализованные на Lua. Некоторые из них перечислены в Lua User's Wiki .

Из перечисленных в вики, Bou был явно вдохновлен Рейком. Его автор заметил, что название "озеро" уже использовалось для другой системы сборки во время запуска проекта, но не предоставил ссылку, поэтому я понятия не имею, с чем это могло быть связано. С тех пор Бо был переименован в Озеро и переехал в новый дом.

Lake - постоянный автор сообщества Lua, Стив Донован. Как и Bou, он реализован почти на чистом Lua (для доступа к файловой системе он зависит от LuaFileSystem ). Вместо того, чтобы действовать как фильтр для создания файлов проекта Makefile или IDE, он управляет компиляторами напрямую на основе описаний проектов, написанных на Lua. Проекты сборки описаны на DSL (предметно-ориентированный язык), который включает в себя доступ ко всему Lua для обработки особых случаев.

"Официальные" бинарные выпуски Lua все происходят из системы под названием tecmake , созданной в Tecgraf, как и сама Lua. Tecmake реализован поверх make через скрипт оболочки и общий набор правил Makefile, реализующих его соглашения. Это хорошо работает для них, но лично мне никогда не удавалось заставить его работать в моей системе. В настоящее время ведется работа по смещению сборок LuaBinaries от причуда techmake.

LuaRocks использует Lua для описания требований к сборке, написан почти полностью на Lua и предназначен для интеграции с распределенным приложением, чтобы приложения могли самообновляться. Насколько я понимаю, одна из целей LuaRocks состоит в том, чтобы позволить сборке проектов использовать свои независимые от платформы "рок" файлы, а использование LuaRocks для создания персонального проекта, безусловно, упростит его публикацию для более широкого распространения позже.

И как запасной вариант, всегда можно использовать Lua как еще один инструмент для расширения сборки на основе make-файла. Я использовал его таким образом для предварительной обработки задач, которые в противном случае я мог бы делегировать awk или perl, например, для сбора сведений из текущей версии fossil в моем построенном проекте.

Обновление:

И с течением времени знание улучшается. Как заметил Victor T в комментарии, Steve's Lake на самом деле является тем же проектом, который получил название Bou. Очевидно, что все возражения против названия «Озеро» исчезли, и я просто не заметил, что это был один и тот же инструмент. Я отредактировал исходный ответ и его обновление, чтобы лучше отразить мое текущее понимание.

1 голос
/ 20 мая 2009

Есть как минимум два разных проекта под названием "Lua Make" (для которых вы можете использовать Google), а также есть какая-то система сборки, связанная с Lua Rocks . Неясно, пригодится ли вещь Lua Rocks, но другие два, кажется, стоит проверить.

...