DLL для LUA плагина

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
ladserg
Posts: 234
Joined: Thu 19 Feb, 2009 14:51
Has thanked: 5 times
Been thanked: 6 times

DLL для LUA плагина

Post by ladserg »

Latest post of the previous page:

Решил пересобрать dll'ки для своих плагинов, и чот у меня лыжи не сразу поехали. Посему на всякий случай приложу здесь краткий мануал, как я собирал dll для плагинов LUA Format Block, LUA Fast File List, LUA File List. Вдруг кому пригодится, или я сам прочитаю, если забуду :-)

В каталоге LUA плагина создаётся каталог src. В него кладутся три файла
  1. readme.txt
    Для сборки динамических библиотек плагина вам понадобится:
    1. GIT Клиент (я брал отсюда: https://git-scm.com/download/win).
    2. Сборка MinGW, поддерживающая сборку 64х разрядных бинарников, я взял сборку отсюда: (http://mingw-w64.sourceforge.net/downlo ... ngw-builds).
      При установке указанной мною сборки необходимо для опции Exception выбрать значение "sjlj", все остальные настройки можно оставить по умолчанию, тогда будет установлена x32 версия компилятора с возможностью сборки x64 бинарников. После чего в подкаталоге mingw32\bin каталога MinGW необходимо скопировать файл mingw32-make.exe в make.exe.
    3. В PATH должен быть добавлен путь до исполняемых файлов MinGW.
    Что бы собрать динамические библиотеки нужно запустить файл build.bat, при этом разово будут загружены исходники Far Manager в
    подкаталог !far_src каталога где лежит плагин.
  2. build.bat

    Code: Select all

    @echo off
    SET PNAME=lfblock
    SET FARDIR=..\..\!far_src
    IF NOT EXIST ..\..\!far_src (
        git clone https://github.com/FarGroup/FarManager.git %FARDIR%
        pushd %FARDIR%\plugins\luamacro
        make -f makefile_gcc DIRBIT=32 
        make -f makefile_gcc DIRBIT=64 
        popd
    )
    IF EXIST ..\..\!far_src (
        IF EXIST luaplug.o del luaplug.o
        make DIRBIT=32 TARGET=..\%PNAME%-x32.dll SRCDIR=%FARDIR% ^
            MYLDFLAGS="-L%FARDIR%\far\Release.32.gcc -L%FARDIR%\plugins\luamacro\luasdk\32"^
            CC=gcc
        IF EXIST luaplug.o del luaplug.o
        make DIRBIT=64 TARGET=..\%PNAME%-x64.dll SRCDIR=%FARDIR% ^
            MYLDFLAGS="-L%FARDIR%\far\Release.64.gcc -L%FARDIR%\plugins\luamacro\luasdk\64"^
            CC=gcc
        IF EXIST luaplug.o del luaplug.o
    )
    
  3. makefile:

    Code: Select all

    # ---- user's settings -------------------------------------------------------
    
    TARGET      = test.dll
    FAR_EXPORTS = OPEN
    SRCDIR      = ..\..\!far_src
    FARDIR      = $(SRCDIR)
    
    # ---- end of user's settings ------------------------------------------------
    include $(SRCDIR)\plugins\luamacro\luafar\luaplug.mak
    
    # (end of Makefile)
    
Остаётся прочитать readme.txt, и следовать его указаниям. Не против, если кто будет использовать данный материал в своих плагинах.

Без указания путей до библиотек lua51, luafar3 и без указания компилятора, dll у меня не собрались. Возможно это пофиксят, т.к. раньше они не требовались.
Last edited by ladserg on Thu 12 Mar, 2020 02:09, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

DLL для LUA плагина

Post by citRiks »

@Shmuel , @DrKnS, @HaRT, и все-все-все
A можно ли заменять (gnu)make на микрософтовский nmake, сбилдиться?
зачем - чтобы можно было дебаггировать визуал студией.
(gnu)make насколько я понимаю, можно только с gdb?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

DLL для LUA плагина

Post by Shmuel »

citRiks, смотрите в исходниках Фара plugins\luamacro\makefile_vc. Собирает luamacro.dll визуал студией.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

DLL для LUA плагина

Post by citRiks »

Shmuel, а другие плагины у которых makefile ?
понимая, что смотря какой makefile и "зависит от", и не требуя 100% точности ответа, смысл вопроса в легко ли переделывается для nmake?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

DLL для LUA плагина

Post by Shmuel »

citRiks, я не знаю о каких других плагинах вы спрашиваете.
Свои плагины собираю исключительно GCC.
Ну и кроме того, в Lua-плагинах 99.9 % отладки это Lua-код, ибо в их DLL всё давно отлажено и они меняются крайне редко.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

DLL для LUA плагина

Post by citRiks »

Shmuel wrote: Sun 22 Aug, 2021 13:39Ну и кроме того, в Lua-плагинах 99.9 % отладки это Lua-код
я больше другие сишные плагины имел ввиду, но спасибо
у вас тоже есть хороший кусок сишного кода в LFSearch (по-моему) для поиска в файле.
Еще highlighter местами на Си.
может захочется/понадобиться чего понять там, а это лучше всего с дебугером
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

DLL для LUA плагина

Post by citRiks »

Last edited by HaRT on Sun 22 Aug, 2021 15:08, edited 2 times in total.
Reason: Спрятан офтопик
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

DLL для LUA плагина

Post by Shmuel »

Сборка средствами Visual Studio не обязательно предполагает nmake.
Например, я собираю Lunatic Python средствами VS, но при этом использую GNU Make.
А разница между nmake и GNU Make не маленькая, и описать её парой предложений не получится.
Лично я везде, где возможно, использую GNU Make.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

DLL для LUA плагина

Post by citRiks »

Shmuel wrote: Sun 22 Aug, 2021 15:08 Сборка средствами Visual Studio не обязательно предполагает nmake.
Например, я собираю Lunatic Python средствами VS, но при этом использую GNU Make.
это как, проектом типа .vcproj сделанным через CMake?
или msbuild-ом как-то с помощью CMake?
и тогда ведь (gnu)makefile вообще не используется, не так ли?
если так для этого однако нужен CMakeList, который прилагается отнюдь не всегда
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

DLL для LUA плагина

Post by Shmuel »

citRiks wrote: Sun 22 Aug, 2021 17:24 это как, проектом типа .vcproj сделанным через CMake?
или msbuild-ом как-то с помощью CMake?
Нет, самое обычное использование GNU Make, которому скармливается Makefile.
А что касается CMakeLists.txt, так он там просто лежит, но (у меня) не используется.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

DLL для LUA плагина

Post by citRiks »

Shmuel wrote: Sun 22 Aug, 2021 17:36 Нет, самое обычное использование GNU Make, которому скармливается Makefile.
и потом это возможно дебаггировать в Визуал Студии?
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

DLL для LUA плагина

Post by Shmuel »

citRiks wrote: Sun 22 Aug, 2021 18:14 и потом это возможно дебаггировать в Визуал Студии?
Не знаю, не пробовал.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

DLL для LUA плагина

Post by citRiks »

Shmuel wrote: Sun 22 Aug, 2021 18:16Не знаю, не пробовал.
в этом был дух и буква вопроса, но спасибо что прояснили
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

DLL для LUA плагина

Post by citRiks »

Shmuel wrote: Sun 22 Aug, 2021 15:08А разница между nmake и GNU Make не маленькая, и описать её парой предложений не получится.
печально это все..
по идее должна быть какая-то утилита для конвертации хотя бы простых, но я когда искал подобное тоже не нашел.
и даже не нашел как генерировать CMakeList из (gnu)makefile, что весьма напрашивается, казалось бы.
Shmuel
Posts: 6819
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

DLL для LUA плагина

Post by Shmuel »

citRiks, это всё офтопик. Посмотрите на название темы.
  1. Как уже было сказано выше, для отладки Lua-плагинов дебаггер Visual Studio не нужен.
  2. Если вам всё-таки хочется, так я вам дал уже ответ как собирать LuaMacro с помощью VS.
Post Reply

Return to “Нужна помощь”