суббота, 15 июня 2013 г.

building lua on windows

Собрать луа самостоятельно из исходников очень просто. Для юникс-подобных систем в дистрибутиве есть make-файл, который всё сделает за вас и предложит различные опции сборки в процессе. Мы же рассмотрим вариант сборки под windows с помощью visual studio. 

Итак, преступим. Заходим на www.lua.org в раздел download и скачиваем дистрибутив исходников ( например lua-5.2.2.tar.gz ). Распаковываем дистрибутив в удобную директорию и сразу лезем в readme.txt. В принципе там всё подробно описано и достаточно не объемно. Но я опишу ваши пошаговые действия.
  • Создаём папку build внутри папки lua, где будут распологаться проектные файлы. Будет выглядеть примерно так: 
  • Создаём пустой solution и называем его lua (new project->blank solution). Далее создаём три пустых проекта внутри solution: library, interpreter, compiler (правой кнопкой на solution, add -> new project). 
  • В проект library добавляем все исходники кроме двух файлов lua.c и luaс.c. Устанавливаем тип проекта "библиотека" ( Configuration type - Static Library (.lib) ). Компилируем. Получаем  на выходе library.lib.
  • В проект interpeter добавляем только один фал lua.c. Тип проекта остаётся по умолчанию - исполняемый файл. В свойствах проекта указываем зависимость на статичную либу, компилируемую предыдущим проектом. Для этого указываем собсвенно саму либу, в Configuration properties->Linker->Input->Additional Dependencies пишем library.lib. И указываем по какому пути находится эта либа, для этого идём в Configuration properties->Linker->General->Additional Library Directories и задаём путь где лежит library.lib. Компилируем. Всё, у нас теперь есть stand alone lua interpreter который можно прописывать в системе и писать скрипты, чтобы он их исполнял. Следующий шаг опциональный, можно сделать компилятор луа-скриптов в байт-код в виде отдельного приложения.
  • Делаем компилятор. Добавляем в проект compiler файл luac.c. И точно так же как в предыдущем пункте задаём зависимость от library.lib. Компилируем. Теперь мы можем с помощью этой программы получать байт код в виде файла или посмотреть листинг программы оттранслированной в команды виртуальной машины луа, что может быть очень познавательно.


Комментариев нет:

Отправить комментарий