Скомпилируйте файлы lua5.2 в один с помощью require и dofile

Могу ли я скомпилировать все мои файлы в один, а затем выполнить из C. В моих файлах lua я использую функции require и dofile. Когда я пытаюсь использовать luac для компиляции, а затем хочу выполнить скомпилированный файл, он не сможет найти мои модули, которые встроены в скомпилированный файл. Я думал, что включение lua-файлов с помощью require и dofile выполняет компилятор luac, как, например, javascript compiler. Проще говоря, компиляторы Javascript добавляют импортирующие файлы в один.

И является ли хорошей практикой, когда вы выпускаете для приложения сценарии lua в одном файле? Потому что у меня есть несколько каталогов со скриптами lua, и когда я делаю релиз, у меня должны быть все файлы lua с двоичным файлом в читаемой форме.

1 ответ

luac это не упаковочный инструмент, а просто компилятор. Он скомпилирует все, что вы подаете, - если это действительно Lua - в байт-код Lua

Если вам нужно, чтобы все было в одном файле, и вы хотите включить свои модули, используя require, вы должны немного изменить исходные файлы, чтобы require знает, где найти эти модули в памяти.

Просто поместите это в конец всех файлов модуля Lua:

package.loaded["<yourmodnamehere>"] = yourmodreturnvalue

Тогда просто require или же luaL_dofile ваш объединенный Lua сразу после вашего Lua init.

Что бы вы ни делали с dofile, вероятно, проще просто переписать ваш код в функции.

Другие вопросы по тегам