Вы, безусловно, можете сделать это (и это не так!), Хотя это не тривиально.Ядро Lua предназначено для встраивания, так что вы можете просто включить источники Lua в свой собственный проект, и оно «просто работает» :).
Сделка немного отличается отмодули - не многие из них подходят для прямого встраивания.Например, это было успешно опробовано для LuaSocket ранее, а также задано здесь .Основная идея заключается в том, чтобы встроить источники MODULE в ваш проект и вставить функцию luaopen_MODULE
в package.preload['MODULE']
, чтобы require
мог забрать ее позже.
Один из способов - посмотреть наисточники проектов, в которые уже встроены Lua и другие библиотеки, такие как LÖVE , MurgaLua и Scrupp .
Если цель - не иметь ни одногоИсполняемый файл без внешних библиотек оказывается недостижимым, вы можете немного ослабить его и перейти на portable приложение - приложение, которое переносит все свои зависимости с ним в одном каталоге, независимо от системы.Для этого и был разработан LuaDist - вы используете его, как и LuaRocks, для установки пакетов Lua.Разница в том, что эти пакеты могут быть установлены / развернуты в отдельном каталоге, где также установлены все необходимые зависимости.Этот каталог («dist») полностью независим, то есть вы можете переместить его куда-нибудь еще, и он все равно будет работать.
Кроме того, мне не нравится идея приложения, которое требует установки (потому что это помещает файлы вокруг моей системы) - удаление должно быть просто удалением каталога:)