проблема LuaRocks

Страницы: 1
RSS
проблема LuaRocks
 
Впервые пользуюсь установкой луа пакетов с помощью LuaRocks
пробовал установить два пакета-безрезультатно.
Выскакивает такая ошибка:


Сама luarocks работает. Команды выполняет:
 
Установите Visual Studio С++ (бесплатная версия -- Community Edition). LuaRocks запускайте из под "Developer Command Prompt" (ну, или добавьте cl.exe, поставляемый в Visual Studio C++, в PATH).
 
 
Спасибо. Получилось.
Я нашёл такой же совет как ваш, но ошибочно думал что речь про это:

это Command Window в Visual Studio
 
Второй вопрос. LuaRocks позиционируется как удобная штука, чтобы модули можно было вызывать с помощью require
Пишу require "chronos"
и он его не находит :(



справедливости ради надо сказать, что ни в одной из этих папок действительно нет этого модуля.
Как же мне его подключить?
 
Добавьте директорию с модулями LuaRocks LDIR Вашего Lua-интерпретатора.
Точно не знаю, но вроде LDIR устанавливается во время компиляции Lua-машины (файл luaconf.h). Если говорить об уже собранном дистрибутиве, то либо нужно сказать LuaRocks, чтобы он хранил свои модули внутри дистрибутива Lua, либо вручную в каждом файле переопределять переменную package.path перед использованием директивы require:
Код
package.path = 'D:/LuaRocks/modules' .. package.path 

Насчёт точного формата строки пути не уверен, но что-то похожее. Например, для QLua у меня есть следующие строка, и она работает:

Код
package.path = getScriptPath() .. '/?.lua;' .. package.path

 
В общем, если не разберётесь с LDIR, то гуглите в сторону "lua package.path".
 
LDIR нашёл в папке luaconf.h, но я не понимаю что мне с этим делать.
Код
** In Windows, any exclamation mark ('!') in the path is replaced by the
** path of the directory of the executable file of the current process.
*/
#define LUA_LDIR   "!\\lua\\"
#define LUA_CDIR   "!\\"
#define LUA_PATH_DEFAULT  \
      ".\\?.lua;"  LUA_LDIR"?.lua;"  LUA_LDIR"?\\init.lua;" \
                   LUA_CDIR"?.lua;"  LUA_CDIR"?\\init.lua"
#define LUA_CPATH_DEFAULT \
   ".\\?.dll;"  ".\\?51.dll;"  LUA_CDIR"?.dll;" LUA_CDIR"?51.dll;" LUA_CDIR"clibs\\?.dll;" LUA_CDIR"clibs\\?51.dll;" LUA_CDIR"loadall.dll;" LUA_CDIR"clibs\\loadall.dll"

#else
#define LUA_ROOT   "/usr/local/"
#define LUA_LDIR   LUA_ROOT "share/lua/5.1/"
#define LUA_CDIR   LUA_ROOT "lib/lua/5.1/"
#define LUA_PATH_DEFAULT  \
      "./?.lua;"  LUA_LDIR"?.lua;"  LUA_LDIR"?/init.lua;" \
                  LUA_CDIR"?.lua;"  LUA_CDIR"?/init.lua"
#define LUA_CPATH_DEFAULT \
   "./?.so;"  "./lib?51.so;"  LUA_CDIR"?.so;" LUA_CDIR"lib?51.so;" LUA_CDIR"loadall.so"
#endif

Обсуждаемый здесь модуль chronos поставился сюда:
 
Получилось в таком виде.
Код
package.path=package.path..';C:\\Program Files (x86)\\Lua\\5.1\\rocks;'
работает.
---
но если подскажете про LDIR буду благодарен
 
Цитата
Let_it_go написал:
Код
** In Windows, any exclamation mark ('!') in the path is replaced by the
** path of the directory of the executable file of the current process.
*/
#define LUA_LDIR   "!\\lua\\"
Если я правильно воспринимаю этот комментарий то при пути к интерпретатору луа например C:\Tools\Lua, LUA_LDIR будет развернуто в C:\Tools\Lua\lua. Причем уже во время исполнения а не компиляции.

Это если оставить
Код
#define LUA_LDIR   "!\\lua\\"
как есть.

Если будете все равно перекомпилировать исправьте на что вам удобно.
А то что в вашем посте выделено красным, #define LUA_LDIR   LUA_ROOT "share/lua/5.1/" - отноится к линух-системам. Вы же виндой пользуетесь?
 
Про LDIR -- либо он намертво прикручивается к дистрибутиву Lua при его компиляции, либо где-то есть конфигурационный файл, в котором можно добавить директорию в пути поиска (по аналогии с переменной окружения PATH в Windows). Но я такого конфигурационного файла не нашёл. Если говорить о Lua-машине в Quik, то точно ничего подобного нет, так что там для решения проблемы мне известны два варианта:
1) вариант с package.path;
2) поместить все искомые модули в папки /lua (*.lua) и /Include (*.dll -- ещё можно в корень Quik'а кидать их, а для некоторых .dll не можно, а нужно) в дистрибутиве Quik.
 
Цитата
Enfernuz написал:
2) поместить все искомые модули в папки /lua (*.lua) и /Include (*.dll -- ещё можно в корень Quik'а кидать их, а для некоторых .dll не можно, а нужно) в дистрибутиве Quik.
Когда речь идет про квик а не какой-то движок луа вообще, это как мне кажется единственно правильная рекомендация )))
 
Цитата
2) поместить все искомые модули в папки /lua (*.lua) и /Include (*.dll -- ещё можно в корень Quik'а кидать их, а для некоторых .dll не можно, а нужно) в дистрибутиве Quik.
а я имею право это делать для модулей устанавливаемых с помощью LuaRocks?
Там какой-то сложный процесс идёт при установке.
Неужели просто можно взять и перекопировать в /lua?
Выглядят эти модули странно:

--
И вытекающий вопрос. я не хочу ставить на виртуалку VisualStudio, чтобы вызывать Developer Command Prompt. Я могу установить пакет на ноутбук (на ноутбуке визуал студия стоит), а потом перекопировать на виртуалку установленный пакет?
 
.rockspec -- это не модули, а его метаданные для менеджера пакетов (как скачать модуль, как собрать модуль). Модули -- это обычные наборы .lua и *.dll (*.so) файлов (или их исходные коды).
Можете взять и перекопировать модуль из LuaRocks в QUIK, конечно. Я, если честно, так и делал.


По умолчанию LuaRocks внутри себя создаёт директорию systree, где в lib хранятся библиотечные файлы модулей, а в share -- *.lua.

Страницы: 1
Читают тему
Наверх