Clipper On Line • Ver Tópico - HMG Extended - um passo a passo do José
Página 1 de 2

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 01:42
por JoséQuintas
Dá trabalho fazer isso.
Deixar aqui um passo a passo pra quem se interessar.

1. Criar no GitHub o projeto vazio
2. Download do projeto
3. Instalar HMG Extended
4. COPIAR os arquivos pra pasta que vai ser o projeto
5. Desinstalar HMG Extended

Aí começa o trabalho....

Normatizar todos os arquivos, no que se refere a maiúsculas/minúsculas, arquivo Windows e NÃO Linux (CR+LF)
Apagar o Harbour, porque como está mau instalado, não é de confiança
Apagar LIBs já geradas, porque.... nem me interessa o que usaram pra compilar
E salvar tudo isso no GitHub é perda de tempo e espaço.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 01:50
por JoséQuintas
Pra ajudar numa pré formatação, podemos usar recursos do hbmk2:

-sanitize -> pra ajustar os arquivos corretamente para o sistema operacional em uso
tem salada dentro dos fontes

-fixcase -> pra alterar os fontes, ajustando os nomes oficiais das funções (upper/lower)
Já que tem o recurso, vamos usar.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 10:38
por JoséQuintas
{bcc}-hbx=${hb_addons}/hmge/${hb_name}


Mantive o prefixo para este post. {bcc}
Interessante.....
A linha só vai ser considerada se usar BCC

Como assim? impede geração de hbx se não for bcc?

Sei lá... talvez pensaram na geração da distribuição, e não no usuário fazer do zero.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 12:45
por JoséQuintas
Poucas coisas que altero:

-o../../harbour/lib/hbvpdf
{bcc}-hbx=../../include/hbvpdf.hbx

pra

-o${hb_addons}/lib/win/${hb_comp}/${hb_name}
-hbx=${hb_addons}/hmge/${hb_name}

${hb_addons} indica a pasta de add-ons do (x)harbour
${hb_comp} indica a pasta conforme compilador (bcc,msvc,mingw,bcc64,mingw64,etc)
${hb_name} é só pra facilitar... indica o nome do HBP, se renomear hbp já renomeia a lib
{bcc} estava limitado ao Borland C, agora gera pra qualquer um

O correto seria a instalação automática de LIB.
Mas a HMGE.... são várias LIBs em uma, talvez gere dezenas de LIBs.
Até pra não misturar com as do Harbour, adotei hmge_ como prefixo pras LIBs.
hbvpdf vai virar hmge_hbvpdf
adordd vai virar hmge_adordd

Imagino que existam 3 ou mais ADORDD: do Harbour 3.2, do Harbour 3.4, uma que está na internet, e essa da HMGE.
Na dúvida, melhor destacar que essa faz parte da HMGE, portanto hmge_adordd.

Importante:
Acho que isso explica porque pode não funcionar igual pra todos os usuários.
Acaba indiretamente obrigando a usar a distribuição.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 13:14
por JoséQuintas
Curiosidade:

addons\hmge\hmge_hbvpdf.hbc (não instalado):
   pdfatsay()
   pdfbold()
   pdfbolditalic()
   pdfbookadd()
   pdfbookclose()
   pdfbookopen()
   pdfbox()
   pdfbox1()
   pdfcenter()
   pdfclose()
   pdfcloseheader()
   pdfcreateheader()
   pdfdeleteheader()
   pdfdisableheader()
   pdfdrawheader()
   pdfeditoffheader()
   pdfeditonheader()
   pdfenableheader()
   pdfheader()
   pdfimage()
   pdfimageinfo()
   pdfinit()
   pdfitalic()
   pdfjpeginfo()
   pdflen()
   pdfmargins()
   pdfnewline()
   pdfnewpage()
   pdfnormal()
   pdfopen()
   pdfopenheader()
   pdfpagenumber()
   pdfpageorient()
   pdfpagesize()
   pdfreverse()
   pdfrjust()
   pdfsaveheader()
   pdfsetfont()
   pdfsetlpi()
   pdfstringb()
   pdftext()
   pdftextcount()
   pdftextwidth()
   pdftiffinfo()
   pdfunderline()
   pdfwidth()
   vpdf_fontsdat()
   __HBEXTERN__HMGE_HBVPDF__()


Esses são nomes que não podem ser usados, senão dá conflito.
Um recurso a mais do hbmk2 é gerar essa última linha, que vai ser uma forma de garantir que todas as funções da LIB vão entrar no EXE.
Não tenho certeza... acho que EXTERNAL ou REQUEST no fonte forçam a entrada completa da LIB.
Também útil se a LIB for gerada pra uso como DLL, assim a lib inteira fica na DLL e fica disponível pra ser chamada.
Quem se interessar que pesquise.... ou solicite que já venha "pronto de fábrica".

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 13:18
por JoséQuintas
Situação no momento:

d:\cdrom\fontes\integra>dir \harbour\addons /s/b
d:\harbour\addons\hmge
d:\harbour\addons\hmge\hmge_adordd.hbx
d:\harbour\addons\hmge\hmge_bostaurus.hbx
d:\harbour\addons\hmge\hmge_calldll.hbx
d:\harbour\addons\hmge\hmge_core.hbx
d:\harbour\addons\hmge\hmge_hbfimage.hbx
d:\harbour\addons\hmge\hmge_hbvpdf.hbx
d:\harbour\addons\hmge\hmge_hbziparc.hbx
d:\harbour\addons\hmge\hmge_miniprint.hbx
d:\harbour\addons\hmge\hmge_tsbrowse.hbx
d:\harbour\addons\hmge\lib
d:\harbour\addons\hmge\lib\win
d:\harbour\addons\hmge\lib\win\mingw
d:\harbour\addons\hmge\lib\win\mingw\libhmge_adordd.a
d:\harbour\addons\hmge\lib\win\mingw\libhmge_bostaurus.a
d:\harbour\addons\hmge\lib\win\mingw\libhmge_calldll.a
d:\harbour\addons\hmge\lib\win\mingw\libhmge_core.a
d:\harbour\addons\hmge\lib\win\mingw\libhmge_hbfimage.a
d:\harbour\addons\hmge\lib\win\mingw\libhmge_hbvpdf.a
d:\harbour\addons\hmge\lib\win\mingw\libhmge_hbziparc.a
d:\harbour\addons\hmge\lib\win\mingw\libhmge_miniprint.a
d:\harbour\addons\hmge\lib\win\mingw\libhmge_tsbrowse.a


Mas tem vários hbp ainda....

d:\github\allgui\hmge\hmge_all.hbp
d:\github\allgui\hmge\samples\advanced\activex_report\demo.hbp
d:\github\allgui\hmge\samples\advanced\aesdemo\aesdemo.hbp
d:\github\allgui\hmge\samples\advanced\combosearchgrid\csg.hbp
d:\github\allgui\hmge\samples\advanced\dbg_test\dbg_test.hbp
d:\github\allgui\hmge\samples\advanced\grid2html\grid2html.hbp
d:\github\allgui\hmge\samples\advanced\gridtoolbar\gridtoolbar.hbp
d:\github\allgui\hmge\samples\advanced\letodbf\client\demo.hbp
d:\github\allgui\hmge\samples\advanced\pagescript\pstest.hbp
d:\github\allgui\hmge\samples\advanced\pdfprinter_test\demopdf.hbp
d:\github\allgui\hmge\samples\advanced\pdfview\pdfview.hbp
d:\github\allgui\hmge\samples\advanced\pdf_print\hmghpdfdoc.hbp
d:\github\allgui\hmge\samples\advanced\pdf_print_1\hpdf_fonts.hbp
d:\github\allgui\hmge\samples\advanced\pdf_print_2\hpdfdemo.hbp
d:\github\allgui\hmge\samples\advanced\readxls_2\readxecel.hbp
d:\github\allgui\hmge\samples\advanced\report_class\test.hbp
d:\github\allgui\hmge\samples\advanced\ribbonbar\agenda.hbp
d:\github\allgui\hmge\samples\advanced\transparenticons\demo1.hbp
d:\github\allgui\hmge\samples\advanced\transparenticons\demo2.hbp
d:\github\allgui\hmge\samples\advanced\tsb_config\tsb_config.hbp
d:\github\allgui\hmge\samples\advanced\tsb_loadfieldsto\demo.hbp
d:\github\allgui\hmge\samples\advanced\view_image\view_image.hbp
d:\github\allgui\hmge\samples\applications\biorhythm\biorhythm.hbp
d:\github\allgui\hmge\samples\applications\dbfview\source\dbfview.hbp
d:\github\allgui\hmge\samples\applications\midbu\midbu.hbp
d:\github\allgui\hmge\samples\applications\modest\modest.hbp
d:\github\allgui\hmge\samples\applications\orderservice\os.hbp
d:\github\allgui\hmge\samples\applications\super\super.hbp
d:\github\allgui\hmge\samples\basic\anywheresearch\anywhere.hbp
d:\github\allgui\hmge\samples\basic\array_arithmetics\arartest.hbp
d:\github\allgui\hmge\samples\basic\draw\playdraw.hbp
d:\github\allgui\hmge\samples\basic\drawborder\testborder.hbp
d:\github\allgui\hmge\samples\basic\hmg_error\demo.hbp
d:\github\allgui\hmge\samples\basic\login_2\setwindow.hbp
d:\github\allgui\hmge\samples\basic\miniprint_2\demo.hbp
d:\github\allgui\hmge\samples\basic\miniprint_3\tstpptf3.hbp
d:\github\allgui\hmge\samples\basic\multi_prg\multiprg.hbp
d:\github\allgui\hmge\samples\basic\netio\client\client.hbp
d:\github\allgui\hmge\samples\basic\netio\server\server.hbp
d:\github\allgui\hmge\samples\basic\report_test\reporttest.hbp
d:\github\allgui\hmge\samples\basic\screenmode\demo.hbp
d:\github\allgui\hmge\samples\basic\splashdemo_3\demo.hbp
d:\github\allgui\hmge\source\hmge_core.hbp
d:\github\allgui\hmge\source\adordd\hmge_adordd.hbp
d:\github\allgui\hmge\source\bostaurus\hmge_bostaurus.hbp
d:\github\allgui\hmge\source\calldll\hmge_calldll.hbp
d:\github\allgui\hmge\source\debugger\debugger.hbp
d:\github\allgui\hmge\source\hbaes\hbaes.hbp
d:\github\allgui\hmge\source\hbfimage\hmge_hbfimage.hbp
d:\github\allgui\hmge\source\hbgdip\hbgdip.hbp
d:\github\allgui\hmge\source\hbprinter\winprint.hbp
d:\github\allgui\hmge\source\hbsqlite3\hbsqlit3.hbp
d:\github\allgui\hmge\source\hbvpdf\hmge_hbvpdf.hbp
d:\github\allgui\hmge\source\hbxlsxml\hbxlsxml.hbp
d:\github\allgui\hmge\source\hbxml\hbxml.hbp
d:\github\allgui\hmge\source\hbzeegrid\hbzeegrid.hbp
d:\github\allgui\hmge\source\hbziparc\hmge_hbziparc.hbp
d:\github\allgui\hmge\source\hmg_hpdf\hmg_hpdf.hbp
d:\github\allgui\hmge\source\miniprint\hmge_miniprint.hbp
d:\github\allgui\hmge\source\pdfprinter\pdfprinter.hbp
d:\github\allgui\hmge\source\propgrid\propgrid.hbp
d:\github\allgui\hmge\source\propsheet\propsheet.hbp
d:\github\allgui\hmge\source\qhtm\qhtm.hbp
d:\github\allgui\hmge\source\socket\socket.hbp
d:\github\allgui\hmge\source\tmsagent\msagent.hbp
d:\github\allgui\hmge\source\tsbrowse\hmge_tsbrowse.hbp
d:\github\allgui\hmge\source\winreport\winreport.hbp
d:\github\allgui\hmge\utils\dba\dba.hbp
d:\github\allgui\hmge\utils\dbfix\cldbfix.hbp
d:\github\allgui\hmge\utils\dbfix\lib\raylib.hbp
d:\github\allgui\hmge\utils\dbu\dbu.hbp
d:\github\allgui\hmge\utils\fmg2prg\fmg2prg.hbp
d:\github\allgui\hmge\utils\fmg2prg\sample\sample.hbp
d:\github\allgui\hmge\utils\hmg_wizard\hmgwiz.hbp
d:\github\allgui\hmge\utils\mgdbu\dbu.hbp

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 13:21
por JoséQuintas
Até chamou a atenção este aqui:

d:\github\allgui\hmge\samples\advanced\readxls_2\readxecel.hbp


Será ReadExcel?
Se for... tanto usuário e ninguém notou o erro?

Bom... já disse... tem exemplo até demais... pra Harbour e XHarbour...
Tem de tudo lá...

Melhor continuar mexendo só em HBP, senão... vixe... mais trabalho ainda...

Curiosidade:
1.539 arquivos PRG, 118 arquivos C, 916 arquivos BAT, 75 arquivos HBP

esquisito 916 arquivos BAT... a proporção é quase 2 BATs por fonte !!!
Com HBP não precisaria nenhum, nem mesmo tantos arquivos HBP !!!

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 13:37
por JoséQuintas
O que fiz até agora:
Criei o hmg_all.hbp

-container
-beep
source/hmge_core.hbp
source/adordd/hmge_adordd.hbp
source/bostaurus/hmge_bostaurus.hbp
source/calldll/hmge_calldll.hbp
source/hbfimage/hmge_hbfimage.hbp
source/hbvpdf/hmge_hbvpdf.hbp
source/hbziparc/hmge_hbziparc.hbp
source/miniprint/hmge_miniprint.hbp
source/tsbrowse/hmge_tsbrowse.hbp


e mexi em cada um desses hbp.

Pra gerar do zero, a parte que terminei:

hbmk2 hmge_all.hbp

É um projeto que contém subprojetos. Normal em HBMK2...
Atende Harbour, xHarbour, e qualquer compilador C.
Lógico... falta confirmar ajustes adicionais na hora de colocar em prática.
Por enquanto podemos dizer que atende Harbour e qualquer compilador C.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 13:50
por JoséQuintas
Estou usando Harbouir 3.4, mingw 8.1, é o que tenho na minha máquina.

Mas lembrei que tenho XHarbour aqui, com bcc582
Usar o compilador C 5.82 que tenho na máquina....

SET PATH=d:\xharbour\comp\bcc582\bin;%PATH%
hbmk2 hmge_all.hbp

falhou, acusou erro em prg:

C:\Users\jmcqu\AppData\Local\Temp\hbmk_rga8h1.dir\h_activex.c:
Error E2219 source\\h_activex.prg 747: Wrong number of arguments in call of macro 'hb_arrayScan' in function Invoke
Error E2188 source\\h_activex.prg 747: Expression syntax in function Invoke
Warning W8013 source\\h_activex.prg 749: Possible use of 'ulPos' before definition in function Invoke
Warning W8057 source\\h_activex.prg 881: Parameter 'dispid' is never used in function Invoke


é PRG com fonte C... nem me perguntem

#ifdef __USEHASHEVENTS

   if( hb_hashScan( ( ( MyRealIEventHandler * ) self )->pEvents, hb_itemPutNL( Key, dispid ),
                    &ulPos ) )
   {
      PHB_ITEM pArray = hb_hashGetValueAt( ( ( MyRealIEventHandler * ) self )->pEvents, ulPos );

#else

   ulPos = hb_arrayScan( ( ( MyRealIEventHandler * ) self )->pEvents, hb_itemPutNL( Key, dispid ),
                         NULL, NULL, 0
            #ifdef __XHARBOUR__
                         , 0
            #endif
                         );

   if( ulPos )
   {
      PHB_ITEM pArray = hb_arrayGetItemPtr( ( ( MyRealIEventHandler * ) self )->pEventsExec, ulPos );

#endif

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 14:13
por JoséQuintas
Primeira tentativa com XHarbour

xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613)
Copyright 1999-2018, http://www.xharbour.org http://www.harbour-project.org/
Error F0034 Bad command line option: 'ko'


tem nos arquivos HBP, mas não aceita no XHarbour.... esquisito...
retirei de todos hbp.

Segunda tentativa:
hbmk2: Building sub-project (level 2): source\calldll\hmge_calldll.hbp
hbmk2: Processing environment options: -xhb -comp=bcc
hbmk2: Processing configuration: d:\xharbour\bin\hbmk.hbc
source\calldll\calldll.prg(49) Error F0029 Can't open #include file: 'hbdyn.ch'
hbmk2 [hmge_calldll]: Error: Running Harbour compiler. 1


dir \hbdyn.ch /s/b
d:\github\harbour32\include\hbdyn.ch
d:\github\harbour34\include\hbdyn.ch
d:\github\hb32\include\hbdyn.ch
d:\harbour\include\hbdyn.ch
d:\temp\hmge1908\Harbour\include\hbdyn.ch


kkkkkkkkk

Esse arquivo é do HARBOUR, não tem no XHarbour.
Tem na distribuição de HMGE com Harbour - ainda bem que não apaguei a instalação ainda - a última linha.

Pera lá....
Uma função que existe no Harbour 3.2 e 3.4, dentro da hbwin, e tem outra na HMGE?
Que doideira !!!!

O troço é muito louco.

Bom... por enquanto, por causa do erro, XHARBOUR e BCC 5.82, USANDO OS HBP e HBMK2, gerou estas:

d:\github\allgui\hmge>dir \xharbour\addons /s/b
d:\xharbour\addons\hmge
d:\xharbour\addons\hmge\hmge_adordd.hbx
d:\xharbour\addons\hmge\hmge_bostaurus.hbx
d:\xharbour\addons\hmge\hmge_core.hbx
d:\xharbour\addons\hmge\lib
d:\xharbour\addons\hmge\lib\win
d:\xharbour\addons\hmge\lib\win\bcc
d:\xharbour\addons\hmge\lib\win\bcc\hmge_adordd.lib
d:\xharbour\addons\hmge\lib\win\bcc\hmge_bostaurus.lib
d:\xharbour\addons\hmge\lib\win\bcc\hmge_core.lib


Agora é XHARBOUR e BCC 5.82
Os mesmos HBP que modifiquei.

Notem que gerou na add-ons do XHARBOUR, porque lá no HBP indiquei ${hb_addons}
e na pasta BCC, porque é ... BCC

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 14:19
por JoséQuintas
E aproveitando que tá instalado... mais um teste:

d:\github\allgui\hmge>dir \xharbour\addons /s/b
d:\xharbour\addons\hmge
d:\xharbour\addons\hmge\hmge_adordd.hbx
d:\xharbour\addons\hmge\hmge_bostaurus.hbx
d:\xharbour\addons\hmge\hmge_core.hbx
d:\xharbour\addons\hmge\lib
d:\xharbour\addons\hmge\lib\win
d:\xharbour\addons\hmge\lib\win\bcc
d:\xharbour\addons\hmge\lib\win\mingw
d:\xharbour\addons\hmge\lib\win\bcc\hmge_adordd.lib
d:\xharbour\addons\hmge\lib\win\bcc\hmge_bostaurus.lib
d:\xharbour\addons\hmge\lib\win\bcc\hmge_core.lib
d:\xharbour\addons\hmge\lib\win\mingw\libhmge_adordd.a
d:\xharbour\addons\hmge\lib\win\mingw\libhmge_bostaurus.a
d:\xharbour\addons\hmge\lib\win\mingw\libhmge_core.a


Como dá pra ver, LIBs pra mingw ou bcc, pra XHARBOUR.

lib/win/bcc -> pra Borland C
lib/win/mingw - pra mingw

Na máquina, com Harbour e XHarbour.

Compilador C mingw 8.1 em Harbour\comp\mingw64\bin
Compilador C bcc 5.82 em XHarbour\comp\bcc582\bin

Coloquei no PATH o XHarbour (ou o Harbour) e a pasta do compilador C.
O HBMK2 fez o resto.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 14:27
por MSDN
Quintas, vc fez mais uma série de postagens que ficarão na história do Fórum, valeu ! :)Pos :-Y

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 14:29
por JoséQuintas
E também aproveitando que tenho mingw 8.1 x86_x64:

d:\github\allgui\hmge>dir \xharbour\addons /s/b
d:\xharbour\addons\hmge
d:\xharbour\addons\hmge\hmge_adordd.hbx
d:\xharbour\addons\hmge\hmge_bostaurus.hbx
d:\xharbour\addons\hmge\hmge_core.hbx
d:\xharbour\addons\hmge\lib
d:\xharbour\addons\hmge\lib\win
d:\xharbour\addons\hmge\lib\win\bcc
d:\xharbour\addons\hmge\lib\win\mingw
d:\xharbour\addons\hmge\lib\win\mingw64
d:\xharbour\addons\hmge\lib\win\bcc\hmge_adordd.lib
d:\xharbour\addons\hmge\lib\win\bcc\hmge_bostaurus.lib
d:\xharbour\addons\hmge\lib\win\bcc\hmge_core.lib
d:\xharbour\addons\hmge\lib\win\mingw\libhmge_adordd.a
d:\xharbour\addons\hmge\lib\win\mingw\libhmge_bostaurus.a
d:\xharbour\addons\hmge\lib\win\mingw\libhmge_core.a
d:\xharbour\addons\hmge\lib\win\mingw64\libhmge_adordd.a
d:\xharbour\addons\hmge\lib\win\mingw64\libhmge_bostaurus.a
d:\xharbour\addons\hmge\lib\win\mingw64\libhmge_core.a


Prontas pra uso:

bcc = libs hmge em bcc 5.82 (até aquela mensagem de erro)
mingw = libs hmge em mingw (até aquela mensagem de erro)
mingw64 = libs hmge em mingw 64 bits (até aquela mensagem de erro)

PRA XHARBOUR.
NENHUM ARQUIVO BAT.

HMGE_ALL.HBP
O mesmo arquivo foi usado pra gerar HMGE pra Harbour, XHarbour, BCC 5.82, mingw 32 bits, mingw 64 bits.

Quanto à calldll.lib.... podemos indicar pra pular essa lib no xharbour (se isso for verdade), pra que a compilação não aconteça
opção 1: no hbp de calldll {xhb}skip
opção 2: em hmge_all.hbp {!xhb}source/calldll/hmge_calldll.hbp

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 14:38
por JoséQuintas
MSDN escreveu:Quintas, vc fez mais uma série de postagens que ficarão na história do Fórum, valeu !


Pelo menos agora a hmge vém com HBP, pode chamar a atenção dos usuários.

É importante configurar correto, principalmente igual aqui que misturei tudo na máquina.

Importantíssimo, pois o HBMK2 usa como referência:

SET HB_INSTALL_PREFIX=d:\xharbour (ou d:\harbour)
SET PATH=d:\xharbour\bin (ou d:\harbour\bin)
SET HBMK_OPTIONS=-xhb (ou nada)

Pra evitar problemas, mais prático copiar o HBMK2.EXE pra dentro da pasta \xharbour\bin.
Se colocar Harbour no path pra pegar o HBMK2, pode acabar pegando o Harbour também.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 14:46
por JoséQuintas
Só voltando aos erros de compilação:

Tudo pode ser resolvido no próprio HBP.
TALVEZ as diferenças estejam nos BATs, então é transferir a informação dos BATs para os HBPs.

A grande diferença geral:

É baixar HMGE e digitar HBMK2 hmge_all.hbp

Não importa se está usando Harbour 3.2, Harbour 3.4, XHarbour, bcc, mingw, msvc, pelles c, etc.
Todo mundo trabalhando igual.

Só pra lembrar:
A HMGE tem 916 arquivos BAT !!!!
Pra que? sei lá... tem usuário que gosta de arquivo BAT... ainda acha que é melhor ter 916 arquivos BAT ao invés de 10 HBP.

Gosta de ver os comandos?
hbmk2 hmge_all.hbp -trace

Vai ver cada comando utilizado, vai poder fazer bat ou digitar a mão se quiser.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 15:01
por JoséQuintas
Agora que percebi uma coisa:

# hrb paths
incpaths=..\include

# hmg paths
incpaths=..\..\include
{!xhb}libpaths=..\..\lib
{xhb}libpaths=..\..\xLib

# app resources
incpaths=${hb_curdir}
sources=${hb_curdir}*.rc

# hmg resources
sources=..\..\resources\minigui.res
# hbprint resources
sources=..\..\resources\hbprinter.res
# miniprint resources
sources=..\..\resources\miniprint.res

# win98 unicode support
# libs=unicows

# core
libs=minigui hbprinter miniprint

# core additional binary
libs=dll cputype propgrid propsheet tsbrowse winreport
{xhb}libs=calldll

# winxp MS Agent support (obsolete)
# libs=TMsAgent

# Harbour needed contribs
libs=hbct hbtip hbwin hbvpdf xhb

# Harbour additional contribs
libs=hbmisc hbziparc hbmzip minizip hbmemio hbxml

# system
libs=vfw32 msvfw32


esse arquivo veio com a HMGE, é o minigui.hbc.
Tem aí opção pra Harbour e XHarbour !!!!! ( {xhb} {!xhb} )

Então está começando a virar realidade !!!!

Talvez em futuras versões venha no hbp: $hb_pkg_install.hbm
E já fique totalmente integrado ao Harbour/XHarbour

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 15:58
por JoséQuintas
Olhem que coisa interessante no HBC original.....

{xhb}libs=calldll


Como eu disse, Harbour 3.2 e 3.4 já tem isso em hbwin.
Essa LIB é pra XHARBOUR.
E precisa do CH do HARBOUR!!!!!

Alguém aqui percebeu isso antes?

Como eu já disse por aqui, as LIBs criam partes que faltam no XHarbour, mas que já existem no Harbour.

Se não tomar cuidado, entra a LIB que é pra XHarbour no Harbour, e acaba causando problema.

Antes eu falava disso, mas não tinha nada concreto pra mostrar.
Agora está aí um exemplo visível.

Precisa usar BATs pra compilar... lógico... porque se não tomar cuidado acontece a mistura, e até agora só tinha BAT pra se usar, senão tinha que fazer manualmente.

No HBP dá pra configurar tudo isso também, como foi feito, e fica bem visível.

Achei erro no HBC original, o mesmo HBC que já postei:

# hmg resources
sources=..\..\resources\minigui.res
# hbprint resources
sources=..\..\resources\hbprinter.res
# miniprint resources
sources=..\..\resources\miniprint.res


NÃO existe pasta RESOURCES, somente pasta RESOURCE.

Isso mostra que HBP está começando a gatinhar na HMGE, porque qualquer um que usasse o HBMK2 teria problema de não encontrar resource.

Eu acho que já dá pra brincar com HMGE usando o que já fiz.
Vou brincar um pouco com os samples.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 16:15
por JoséQuintas
Vamos direto no SUPER.
É bom pra entenderem como funciona uma compilação e como resolver.

d:\github\allgui\hmge\samples\applications\super>hbmk2 super

hbmk2: Processando opções do ambiente: -comp=mingw
hbmk2: Processando arquivo de configuração: d:\harbour\bin\hbmk.hbc
Harbour 3.4.0dev (0e13c7c08d) (2019-09-09 14:45)
Copyright (c) 1999-2019, https://github.com/JoseQuintas/harbour-core/
Compiling 'superchef.PRG'...

superchef.PRG:9: error F0029 Can't open #include file 'minigui.ch'
hbmk2 [super]: Error: Running Harbour compiler (built-in). 1
(d:\harbour\bin\harbour.exe) -n2 superchef.PRG backup.prg bancos.prg caixa.prg categoria_produtos.prg clientes.prg compras.prg cpag.prg crec.prg empresa.prg entregas.prg formas_pagamento.prg formas_recebimento.prg fornecedores.prg funcoes.PRG grupo_fornecedores.prg impostos.prg materia_prima.prg mesas.prg motoboys.prg movimento_bancario.prg operadores.prg produtos.prg promocao.prg reajuste.prg rel_cpag_forn.prg rel_crec_cli.prg rel_estoque_minimo.prg rel_fechamento_dia.prg rel_garcon.prg rel_motoboy.prg rel_mov_banco.prg rel_mov_caixa.prg rel_mov_cpag.prg rel_mov_crec.prg rel_pizza_001.prg rel_posicao_estoque.prg rel_posicao_mprima.prg rel_produto_001.prg subcategoria_produtos.prg atendentes.prg unidades_medida.prg venda_balcao.prg venda_delivery.prg venda_mesas.prg -m -n -w3 -es2 -ge1 -DHBMK_HAS_HBMK=1 -oC:\Users\jmcqu\AppData\Local\Temp\hbmk_ujreza.dir\ -id:\harbour\include -undef:.ARCH. -D__PLATFORM__WINDOWS -D__LITTLE_ENDIAN__ -D__ARCH32BIT__


não encontrou minigui.ch
Porque não?
porque no HBP não diz nada, só tem a lista de fontes.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 16:22
por JoséQuintas
Na pasta SUPER tem um HBC.
Sinto muito dizer... mas HBC não é pra isso.
Se isso se refere ao projeto, é pra colocar no HBP.
Mas.... isso se refere a HMGE... e agora temos HBC, então é apagar mesmo

incpaths=${hb_curdir}
libpaths=
libs=hbziparc hbmzip minizip unicows


Primeiro teste, e já apagamos um arquivo de compilação.

Agora acrescentar no super.hbp... hmge.hbc, que mostra do que a HMGE precisa.

d:\github\allgui\hmge\samples\applications\super>hbmk2 super.hbp
hbmk2: Processando opções do ambiente: -comp=mingw
hbmk2: Processando arquivo de configuração: d:\harbour\bin\hbmk.hbc
Harbour 3.4.0dev (0e13c7c08d) (2019-09-09 14:45)
Copyright (c) 1999-2019, https://github.com/JoseQuintas/harbour-core/
Compiling 'superchef.PRG'...
2000
superchef.PRG:2021: warning W0032 Variable 'X_NOME' is assigned but not used in function '1960:ALTERA_TAMANHO'

superchef.PRG:2021: warning W0032 Variable 'X_PEDACO' is assigned but not used in function '1961:ALTERA_TAMANHO'
2400
superchef.PRG:2436: warning W0032 Variable 'X_TIPO' is assigned but not used in function '2339:CONFIGURAR_VENDA'
2500
superchef.PRG:2583: warning W0032 Variable 'X_NOME' is assigned but not used in function '2522:ALTERA_BORDA'

superchef.PRG:2583: warning W0032 Variable 'X_PRECO' is assigned but not used in function '2523:ALTERA_BORDA'

No code generated.


Ok. é a checagem -w3 -es2 que é padrão, reclamando que precisa declarar variáveis.
Sem problemas, se é necessidade do projeto, acrescentamos no HBP o -w0 -es0, pra ser menos exigente na compilação.

Isso não é exigência do HBMK2... se compilar com Harbour sozinho vai acontecer a mesma coisa.
O default do Harbour é -w3 -es2, diferente do Clipper, então são os parâmetros normais do Harbour.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 16:29
por JoséQuintas
Compiling 'venda_balcao.prg'...
Lines 24997, Functions/Procedures 28
Generating C source output to 'C:\Users\jmcqu\AppData\Local\Temp\hbmk_3o3jea.dir\venda_balcao.c'... Done.
Compiling 'venda_delivery.prg'...
4000
venda_delivery.prg:11: error F0029 Can't open #include file 'hbcompat.ch'
hbmk2 [super]: Error: Running Harbour compiler (built-in). 1


Normal, não encontrou o arquivo de compatibilidade com XHarbour.
Como solução rápida, já que estamos só testando... acrescentar xhb.hbc que é o conjunto de compatibilidade

A solução ideal é evitar o uso disso, ou usar somente o necessário, mas não vém ao caso agora porque estamos apenas compilando.

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 20:18
por JoséQuintas
A quantidade não serve de referência.
Considerando que o Maligno ficou fora muitos anos, provavelmente estaria no topo.

Como o título diz... é um passo a passo.
Se não for assim, deixa de ser o passo a passo.

Mas está concluído, é a última vez sobre algo desse tipo.
É um dia inteiro gasto pra isso, e seria muito mais se tivesse revisão, testes, e tudo que mencionou aí.
Provavelmente nem faria isso.

pizza.png


https://github.com/JoseQuintas/allgui

Pra resources... o HBMK2 se vira pra compilar - mais BAT eliminado.
Mas não dá pra compilar resource com conteúdo repetido.

#{hbexe}sources=resource/hbprinter.rc
#{hbexe}sources=resource/miniprint.rc
{hbexe}sources=resource/minigui.rc


No projeto super.hbp, só algumas adições, além dos fontes que já estavam lá.

-osuper
hmge.hbc
xhb.hbc
-w0
-es0
-inc


Aplicativo compilado, teste concluído.

No mais, após confirmação, é apagar os 915 BATs, e todos os HPBs, HBCs, HBMs, .RES, e coisas que se tornaram inúteis.

Em todo caso, meu hbmk.hbc que fica em harbour\bin, que é meu padrão geral:

mt=yes
gui=yes
strip=yes
{hbexe}compr=yes
libpaths=d:/cdrom/fontes/integra/sefazclass
libpaths=d:/github/allgui/hmge
{mingw}CFLAGS=-Wno-implicit-fallthrough -Wno-cast-function-type -Wno-misleading-indentation
PRGFLAGS=-m -n -w3 -es2 -ge1

HMG Extended - um passo a passo do José

MensagemEnviado: 15 Set 2019 21:37
por JoséQuintas
Meu pré-compilador, usando xharbour:

compila.png


Tá avisando que não estou usando minha configuração padrão.
E também que o XHarbour não está assinado, o que faz diferença.