Скомпилируйте файлы 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
, вероятно, проще просто переписать ваш код в функции.