Форум » GUI » HwBuilder » Ответить

HwBuilder

alkresin: Сделал утилиту для сборки программ типа hbmk: http://www.kresin.ru/hwbuilder.html. Поначалу - для HwGUI, а потом увидел, что можно и для других GUI использовать, в том числе для Minigui (проверил - работает), и для консольных программ. Hbmk не устраивал, потому что надо много дополнительных вещей указывать каждый раз для GUI и потому что он не всегда корректно определяет пути к компиляторам (в HwBuider они однозначно прописываются в ini). Собственно, я им и не пользовался, а bat'ники и sh-скрипты надоело писать каждый раз. На сайте - бинарники. Исходники - в комплекте HwGUI (пока на SVN).

Ответов - 28, стр: 1 2 All

gfilatov2002: alkresin пишет: можно и для других GUI использовать Попробовал собрать простой проект для Минигуи в качестве примера. Исполняемый файл собрался, но совершенно не понятно, как подключить свои ресурсы в программу, поскольку при сборке используется только фиксированный RC-файл с манифестом из папки image.

Andrey: У меня много rc-файлов в проекте, 35 штук. В связи с ограничениями в BCC 5.50 на большие .res пришлось делать кучу RC-файлов. Да так и осталось. Так что при сборке нужно бы это предусматривать. [pre2]Resource\Ab4win.rc Resource\Ab4win_cnf.rc Resource\Ab4win0.rc Resource\Ab4win1.rc ....[/pre2]

Dima: alkresin Александр а есть зеркало сайта http://www.kresin.ru а то у нас зачем то заблочили этот сайт ?


alkresin: По rc-файлам надо подумать. Я сам их не использую, в частности - потому что они только на Windows работают, поэтому как-то упустил этот момент.

alkresin: Dima пишет: Александр а есть зеркало сайта http://www.kresin.ru а то у нас зачем то заблочили этот сайт ? Нет зеркала. И давно заблокировали? Он просто не отзывается или сообщение какое-то?

Pasha: Сейчас все друг друга блокируют. Забейте Нас к примеру блокирует гугл: 03. That’s an error. Your client does not have permission to get URL / from this server. That’s all we know. Причем не всех провайдеров, с мобильного интернета пускает. Иногда мы блокируем гугл Для блокировок есть vpn.

alkresin: Обновил Windows бинарники на сайте - решена проблема с файлами ресурсов. Теперь их можно добавлять в любом количестве в список файлов вместе с prg в файле проекта или в командной строке.

Dima: Pasha пишет: Для блокировок есть vpn. + TOR

gfilatov2002: alkresin пишет: решена проблема с файлами ресурсов Спасибо. Удалось подключить ресурсные файлы Миингуи при сборке тестового примера. Полный лог-файл сборки hwbuild.log см. ниже: [pre2] *** demo.prg *** > c:\minigui\harbour\bin\harbour -n -q -ic:\minigui\harbour\include -ic:\minigui\include -osample\obj\bcc\ sample\demo.prg Harbour 3.2.0dev (r2311302136) Copyright (c) 1999-2023, https://harbour.github.io/ *** Other.prg *** > c:\minigui\harbour\bin\harbour -n -q -ic:\minigui\harbour\include -ic:\minigui\include -osample\obj\bcc\ sample\Other.prg Harbour 3.2.0dev (r2311302136) Copyright (c) 1999-2023, https://harbour.github.io/ *** demo.c *** > c:\Borland\BCC58\bin\bcc32.exe -c -d -w -O2 -Ic:\minigui\harbour\include -Ic:\minigui\include -osample\obj\bcc\demo.obj sample\obj\bcc\demo.c Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland sample\obj\bcc\demo.c: *** Other.c *** > c:\Borland\BCC58\bin\bcc32.exe -c -d -w -O2 -Ic:\minigui\harbour\include -Ic:\minigui\include -osample\obj\bcc\Other.obj sample\obj\bcc\Other.c Borland C++ 5.82 for Win32 Copyright (c) 1993, 2005 Borland sample\obj\bcc\Other.c: > c:\Borland\BCC58\bin\brc32 -r \minigui\resources\minigui.rc -fominigui Borland Resource Compiler Version 5.40 Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved. > c:\Borland\BCC58\bin\brc32 -r \minigui\resources\hbprinter.rc -fohbprinter Borland Resource Compiler Version 5.40 Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved. > c:\Borland\BCC58\bin\brc32 -r \minigui\resources\miniprint.rc -fominiprint Borland Resource Compiler Version 5.40 Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved. *** demo.exe *** > c:\Borland\BCC58\bin\ilink32 -Gn -aa -Tpe -Lc:\minigui\harbour\lib -Lc:\minigui\lib -Lc:\Borland\BCC58\lib\psdk c0w32.obj sample\obj\bcc\demo.obj sample\obj\bcc\Other.obj, sample\demo.exe,, minigui.lib hbprinter.lib miniprint.lib bostaurus.lib hbwin.lib xhb.lib hbvm.lib hbrtl.lib gtgui.lib gtwin.lib hbcpage.lib hblang.lib hbrdd.lib hbmacro.lib hbpp.lib rddntx.lib rddcdx.lib rddfpt.lib hbsix.lib hbcommon.lib hbct.lib hbcplr.lib hbpcre.lib hbzlib.lib ws2_32.lib cw32.lib import32.lib iphlpapi.lib,, minigui.res hbprinter.res miniprint.res Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland === sample\demo.exe created successfully! === [/pre2] Но выявилась другая проблема: при сборке библиотеки утилита tlib просит добавить параметр /P32 в эту строку исходника hwb.prg "{path}\tlib /P32 {out} {objs}", ;

alkresin: gfilatov2002 пишет: при сборке библиотеки утилита tlib просит добавить параметр /P32 Хм... У меня с bcc5 - не требует, hwgui нормально собирается. Добавлю сегодня флаги для сборки библиотеки, строчку соответствующую в ini.

alkresin: Обновил Windows бинарники на сайте. Свои флаги для сборки библиотеки теперь можно указать в ini, например: [C_COMPILER] id=bcc ... def_libflags=/P32 или непосредственно в файле проекта: {bcc}def_libflags=/P32

Andrey: Можно ли вашу утилиту использовать для сборки МиниГуи под VisualC ? Вот такой Demo.hbp -trace # Compilation keys -prgflag=-w2 -es1 # Enable multi/single-thread Harbour VM -mt # Incremental-compilation mode -inc # folder where are all the (*.obj) this project -workdir=OBJ # Name of output EXE-file -oDemo_timer # pass single flag to output executable when -run option is used # передать одиночный флаг на выходной исполняемый файл, если используется опция -run #-runflag=1 # List all (*.prg) this project main.prg main_before.prg main_splash.prg main_check.prg main_misc.prg main_other.prg main_timer.prg MainMenu_form.prg # кнопки главного меню - таблицы table12.prg table3.prg table4.prg table4menu.prg table4_card.prg # вспомогательные модули menu_context.prg form_Password.prg form_CopyData.prg form_TimerShow.prg WaitWinGif.prg util_c_code.prg util_button.prg util_misc.prg Users.prg ErrorSys3.prg IniLoad.prg IniConfig.prg other2fun.prg # ACHOICE() меню на объекте ButtonEx test_achoice.prg util_achoice.prg # Resources for the project Resource\demo.rc Resource\demo_64.rc Resource\demo_128.rc Resource\demoDummy1.rc Resource\demoDummy2.rc #Path to the main and the auxiliary libraries (*.lib) #-lminigui - для VC не надо #-ltsbrowse - для VC не надо -lTsbViewer -lhbmemio # file encryption/decryption #-lhbaes - для VC не надо

alkresin: Можно. Главное - все правильно прописать в hwbuild.ini. Я использовал вот такой для minigui: [HARBOUR] harbour_path=c:\softools\minigui\harbour harbour_bin_path=c:\softools\minigui\harbour\bin harbour_include_path=c:\softools\minigui\harbour\include def_flags=-n -q libs=dll gtgui hbcplr hbrtl hbvm hblang hbcpage hbmacro hbrdd hbhsx rddntx rddcdx rddfpt hbsix hbcommon hbdebug hbpp hbpcre hbct hbmisc hbtip hbvpdf hbwin xhb bostaurus hbprinter miniprint socket hbhpdf libhpdf png hbzlib [GUILIB] id=minigui path=c:\softools\minigui inc_path=c:\softools\minigui\include lib_path=c:\softools\minigui\lib libs=minigui GraphPlus miniprint2 winreport tsbrowse propgrid [C_COMPILER] id=bcc bin_path=c:\borland\bcc582\bin harbour_lib_path=c:\softools\minigui\harbour\lib def_flags=-c -d -w -O2 [VIEW] font=Courier New,24 Для msvc нужна примерно такая секция: [C_COMPILER_3] id=msvc bin_path=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX86\x86 harbour_lib_path=c:\harbour\lib\win\msvc def_cflags=/TP /W3 /nologo /c def_linkflags=-SUBSYSTEM:WINDOWS env_1=PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\\Extensions\Microsoft\IntelliCode\CLI;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX86\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\VC\VCPackages;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\bin\Roslyn;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\devinit;C:\Windows Kits\10\bin\10.0.19041.0\x86;C:\Windows Kits\10\bin\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\\MSBuild\Current\Bin;C:\Windows\Microsoft.NET\Framework\v4.0.30319;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;c:\softools\git\usr\bin;c:\tools;c:\tools\arh;c:\harbour\bin;d:\softools\mingw_w64\mingw32\bin;c:\borland\bcc55\bin;c:\softools\git\cmd;c:\softools\subversion\bin;C:\Program Files\OpenVPN\bin;C:\softools\Go\bin;C:\softools\Python\Scripts\;C:\softools\Python\;C:\Users\SYSADMIN\AppData\Local\Microsoft\WindowsApps;c:\softools\go\bin;d:\svn;c:\Program Files\Java\jdk1.8.0_231\bin;C:\Users\SYSADMIN\go\bin;c:\softools\cmake\bin;;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja env_2=INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\include;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include;C:\Windows Kits\10\include\10.0.19041.0\ucrt;C:\Windows Kits\10\include\10.0.19041.0\shared;C:\Windows Kits\10\include\10.0.19041.0\um;C:\Windows Kits\10\include\10.0.19041.0\winrt;C:\Windows Kits\10\include\10.0.19041.0\cppwinrt env_3=LIB=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\lib\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x86;C:\Windows Kits\10\lib\10.0.19041.0\ucrt\x86;C:\Windows Kits\10\lib\10.0.19041.0\um\x86 env_4=LIBPATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\ATLMFC\lib\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x86;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x86\store\references;C:\Windows Kits\10\UnionMetadata\10.0.19041.0;C:\Windows Kits\10\References\10.0.19041.0;C:\Windows\Microsoft.NET\Framework\v4.0.30319 Чтобы правильно прописать все эти строчки, прочитайте внимательно http://www.kresin.ru/notes/index.php?b=blog&n=32. Что касается файла проекта - он немного, но не сильно, отличается от hbp. Логика построения такая же, см. http://www.kresin.ru/notes/index.php?b=blog&n=33 В вашем случае будет что-то вроде: makemode=on libs=TsbViewer hbmemio prgflags=-w2 -es1 objpath=obj outname=Demo_timer *.prg srcpath=Resource *.rc

SergKis: alkresin пишет [HARBOUR] harbour_path=c:\softools\minigui\harbour harbour_bin_path=c:\softools\minigui\harbour\bin harbour_include_path=c:\softools\minigui\harbour\include def_flags=-n -q libs=dll gtgui hbcplr hbrtl hbvm hblang hbcpage hbmacro hbrdd hbhsx rddntx rddcdx rddfpt hbsix hbcommon hbdebug hbpp hbpcre hbct hbmisc hbtip hbvpdf hbwin xhb bostaurus hbprinter miniprint socket hbhpdf libhpdf png hbzlib [GUILIB] id=minigui path=c:\softools\minigui inc_path=c:\softools\minigui\include lib_path=c:\softools\minigui\lib libs=minigui GraphPlus miniprint2 winreport tsbrowse propgrid [C_COMPILER] id=bcc bin_path=c:\borland\bcc582\bin harbour_lib_path=c:\softools\minigui\harbour\lib def_flags=-c -d -w -O2 [VIEW] font=Courier New,24 А так можно ? в среде запуска стоит SET HMG=c:\softools\minigui SET HMG_BCC=c:\borland\bcc58 ... тогда[pre2] [HARBOUR] harbour_path=%HMG%\harbour harbour_bin_path=%HMG%\harbour\bin harbour_include_path=%HMG%\harbour\include ... [GUILIB] id=minigui path=%HMG% inc_path=%HMG%\include lib_path=%HMG%\lib libs=minigui GraphPlus miniprint2 winreport tsbrowse propgrid [C_COMPILER] id=bcc bin_path=%HMG_BCC%\bin harbour_lib_path=%HMG%\harbour\lib def_flags=-c -d -w -O2 [VIEW] font=Courier New,24 [/pre2] и вставить, расширить список lib, prg, obj из внешних файлов, например командой libs = ... #include .\my_lib.txt ... #include .\my_prg.txt ... #include .\my_obj.txt У меня своя программа ведения проектов и она формирует списки динамически по потребностям для сборки bat файлом, т.е. есть постоянные lib, obj + динамически сформированные, prg списки форм. только от времени модификаций

alkresin: SergKis пишет: SET HMG=c:\softools\minigui ... [HARBOUR] harbour_path=%HMG%\harbour ... Хорошая идея, сделаю. #include .\my_lib.txt ... #include .\my_prg.txt Имеете ввиду, в файле проекта?

SergKis: alkresin пишет Имеете ввиду, в файле проекта? Да. Сейчас для 1 бат файла сборки на несколько проектов из программы создаются списки prg, obj, lib для компиляции, постоянные obj для конкретной сборки (берутся из ini описания проектов моей программы), сборка может формировать lib (в ini могут указываться др. lib только этого проекта) и ее так же надо подключать, т.е. кроме постоянных в ini прописанных, есть динамические подключения. Файл настройки ini программы ведания проектов, как есть из проекта с FireBird (3-и проекта) [pre2] [APP] Utf8=Yes Title=BK19. HMG 2.07. MSVC 2019. Notepad=\BK19\BIN\Notepad2.exe HbEdit =\BK19\BIN\HBEDIT\HbEdit.exe -pal=4 -his=0 ;AkelPad=\BK19\BIN\AkelPadU Default=02 Res=.\RES CmdComp=_hb_.cmd CmdRun= LibName= [01] Title=EAlarm. FDB => BASE.DBF PathApp=.\PRG PathExe=.\INF NameExe= Include=*.prg Exclude= Lib=.\Lib\rddletoDbf32.lib [02] Title=EAlarm 1.3. FDB => BASE.DBF PathApp=.\PRG1_3 PathExe=.\INF1_3 NameExe= Include=*.prg Exclude= Lib=.\Lib\rddletoDbf32.lib [03] Title=EAlarm 1.3. SMS and MAIL PathApp=.\PRGS PathExe=.\INFS NameExe= Include=*.prg Exclude= Lib=.\Lib\Hmg32_leto1.lib .\Lib\rddleto321.lib [04] [05] [06] [07] [08] [09] [Common] FontName=Arial FontSize=11 SizeScale=100,100 [Window] Form_1Form_1=75,42,1209,642, wErrorwError=458,2,909,313, [Browse] brwProg=304,87,87,87,604, brwEntiti=217,434,434,87, brwEntAll=173,346,346,87,216, [Obj] 1=\BK19\OBJ\ErrSysHMG_.obj %O%\%P%.obj \BK19\OBJ\MapFile.obj [Lib] 1=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib 2=shell32.lib ole32.lib oleaut32.lib uuid.lib Vfw32.lib comctl32.lib 3=odbc32.lib odbccp32.lib ShLwapi.lib WinMM.lib legacy_stdio_definitions.lib 4=ws2_32.lib WSock32.Lib ImageHlp.lib htmlhelp.lib MSImg32.lib IPHlpApi.lib 5=/nologo /incremental:no /pdb:%O%\%P%.pdb /SUBSYSTEM:WINDOWS 6=/machine:I386 /out:%W%\%P%.exe 7=hbdebug.lib hbvmmt.lib hbrtl.lib hblang.lib hbrdd.lib rddfpt.lib 8=rddntx.lib rddcdx.lib hbmacro.lib hbpp.lib hbsix.lib hbcommon.lib 9=hbcplr.lib hbgt.lib hbcpage.lib hbct.lib hbmemio.lib hbzlib.lib 10=hbmisc.lib hbwin.lib xhb.lib rddsql.lib rddbm.lib 11=bk32_c.lib gtwin.lib gtgui.lib hbLibXL_c.lib hbxlsxml.lib 12=MiniGui32_c.lib MiniGUI32_c2.lib MiniGUI32_2.lib Hmg32_dop.lib 13=xhb.lib hbpcre.lib ;14=rddleto321.lib ;15=rddletoDbf32.lib [FColor] 1={"CLASS", "R"} 2={"ACCESS", "V"} 3={"ASSIGN", "V"} 4={"METHOD", "M"} 5={"DEFINE", "H"} 6={"STATIC", "B"} [Entiti] 01=FUNC 02=FUNCTION 03=PROC 04=PROCEDURE 05=CLASS 06=ACCESS 07=ASSIGN 08=METHOD 09=DEFINE WINDOW 10=INIT WINDOW 11=INIT DIALOG 12=STAT FUNC 13=STATIC FUNC 14=STATIC FUNCTION 15=STAT PROC 16=STATIC PROC 17=STATIC PROCEDURE 18=HB_FUNC( 19=INIT PROC 20=INIT PROCEDURE 21=EXIT PROC 22=EXIT PROCEDURE 23=CASE WM_... [/pre2]

alkresin: Можно будет сделать. "#", правда, используется для комментариев, поэтому лучше будет @<имя файла> - можно будет использовать это и в файле проекта, и в командной строке.

SergKis: alkresin пишет [VIEW] font=Courier New,24 Это секция просмотра ошибок, правильно понимаю ? Можно ли сделать запуск своего (bat, exe) просмотра ? У меня в проекте можно запустить (определяет bat файл сборки) ключ Notepad=... или свою программу с разбором протокола и перехода по строкам ошибок в редактирование для правки. Можно обойтись и блокировкой показа вашего view с возвратом Errorlevel HwBuilder

alkresin: Это для GUI интерфейса программы. hwbc выводит все в консоль, hwb - в окно, где можно смотреть результаты сборки в полном и сокращенном виде, сохранить.. Кроме того, если запустить hwb без параметров или с файлом проекта и опцией -Open, открывается окно проекта, где можно его отредактировать, запустить на сборку с выбранными параметрами ( компилятором и пр. ). > Можно ли сделать запуск своего (bat, exe) просмотра ? Можно.

alkresin: Обновил бинарники на сайте, теперь это версия 1.5 По предложению Сергея добавлена возможность использовать в путях в hwbuild.ini переменные окружения, например, harbour_bin_path=%HB_PATH%\bin или harbour_bin_path=$HB_PATH\bin В командной строке и в файле проекта можно включить содержимое других файлов с помощью конструкции @<file>. Если файл указан без пути к нему, программа ищет его сначала в текущем каталоге, а потом - в каталоге, где находится исполняемый файл hwb/hwbc.



полная версия страницы