Clipper On Line • Ver Tópico - Primeiros testes HMG 3.4.3

Primeiros testes HMG 3.4.3

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 01 Fev 2017 11:24

Uma coisa que não me entra na cabeça:
A primeira coisa pra usar minigui é TENTAR aprender a compilar.

Primeiro eu preciso tentar entender, por enquanto não dá nem pra sugerir mudanças.

Vamos lá....

1) Baixei HMG 3.4.3 que já vém com tudo pronto, incluindo Harbour e mingw

2) Instalei em d:\cvsfiles\thmg

3) Configurei o básico, pra usar tudo que veio nela, do jeito que veio

d:\CVSFiles\thmg>set hb
HB_COMPILER=mingw
HB_COMPILER_VER=0503
HB_INSTALL_PREFIX=d:\cvsfiles\thmg\harbour
HB_LANG=EN
PATH=d:\tools\util;d:\cvsfiles\thmg\harbour\bin;d:\cvsfiles\thmg\mingw\bin


4) Compilei um exemplo, modo tradicional (tradicional do Harbour, não tradicional da minigui)

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>hbmk2 hello.hbp

hbmk2: Processing environment options: -comp=mingw
Harbour 3.2.0dev (r1601151502)
Copyright (c) 1999-2015, http://harbour-project.org/
Compiling 'hello.prg'...
hello.prg(6) Error F0029  Can't open #include file 'hmg.ch'
hbmk2[hello]: Error: Running Harbour compiler (embedded). 1
(d:\cvsfiles\thmg\harbour\bin\harbour.exe) -n2 hello.prg -oc:\temp\hbmk_99rbak.dir\ -id:\cvsfiles\thmg\harbour\include


5) ok, normal de compilação, precisa indicar aonde está esse include, d:\cvsfiles\thmg\include

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>hbmk2 hello.hbp -Id:\cvsfiles\thmg\include

hbmk2: Processing environment options: -comp=mingw
Harbour 3.2.0dev (r1601151502)
Copyright (c) 1999-2015, http://harbour-project.org/
Compiling 'hello.prg'...
Lines 15530, Functions/Procedures 1
Generating C source output to 'c:\temp\hbmk_lbu1fp.dir\hello.c'... Done.
c:/temp/hbmk_lbu1fp.dir/hello.o:hello.c:(.data+0x38): undefined reference to `HB_FUN__DUMMY'
c:/temp/hbmk_lbu1fp.dir/hello.o:hello.c:(.data+0x48): undefined reference to `HB_FUN__DEFINEWINDOW'
c:/temp/hbmk_lbu1fp.dir/hello.o:hello.c:(.data+0x58): undefined reference to `HB_FUN__ENDWINDOW'
c:/temp/hbmk_lbu1fp.dir/hello.o:hello.c:(.data+0x68): undefined reference to `HB_FUN_DOMETHOD'
collect2.exe: error: ld returned 1 exit status
hbmk2[hello]: Error: Running linker. 1
gcc.exe c:/temp/hbmk_lbu1fp.dir/hello.o c:/temp/hbmk_lbu1fp.dir/hbmk_vccrnn.o    -Wl,--nxcompat -Wl,--dynamicbase -mconsole -Wl,--start-group -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib   -Wl,--end-group -ohello.exe  -Ld:/cvsfiles/thmg/harbour/lib/win/mingw

hbmk2: Error: Referenced, missing, but unknown function(s): _DUMMY(),
       _DEFINEWINDOW(), _ENDWINDOW(), DOMETHOD()


6) ok, normal de compilação, precisa indicar a lib da minigui: d:\cvsfiles\thmg\lib\hmg.a

Vou só colocar um resumo, pro texto ficar menor

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>hbmk2 hello.hbp -Id:\cvsfiles\thmg\include -lhmg -Ld:\cvsfiles\thmg\lib

hbmk2: Hint: Add option 'hbhpdf.hbc' for missing function(s):
hbmk2: Hint: Add option 'hbmisc.hbc' for missing function(s):
hbmk2: Hint: Add option 'hbwin.hbc' for missing function(s):
hbmk2: Hint: Add option 'hbmzip.hbc' for missing function(s)
hbmk2: Hint: Add option 'hbct.hbc' for missing function(s):


7) ok, faltaram essas LIbs, adicioná-las conforme indicado

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>hbmk2 hello.hbp -Id:\cvsfiles\thmg\include -lhmg -Ld:\cvsfiles\thmg\lib hbhpdf.hbc hbmisc.hbc hbwin.hbc hbmzip.hbc hbct.hbc

hbmk2: Processing environment options: -comp=mingw
Harbour 3.2.0dev (r1601151502)
Copyright (c) 1999-2015, http://harbour-project.org/
Compiling 'hello.prg'...
Lines 15530, Functions/Procedures 1
Generating C source output to 'c:\temp\hbmk_02u2bm.dir\hello.c'... Done.
d:/cvsfiles/thmg/lib/libhmg.a(c_media.o):c_media.c:(.text+0x301): undefined reference to `MCIWndCreateW'


8) Não foi.
Já vi esse erro antes, HMG extended. É um erro normal, deve faltar alguma lib.

9)
Muita gente usa e funciona.
Agora vou ao que é recomendado: vou usar os BATs que vieram.

Apenas estou mostrando aqui o andamento.
Já serve pra outros que forem tentar do mesmo jeito.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 01 Fev 2017 11:40

Agora vamos ao conteúdo da pasta:

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>dir
O volume na unidade D é TRABALHO
O Número de Série do Volume é 864A-700A

Pasta de d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World

01/02/2017  11:56    <DIR>          .
01/02/2017  11:56    <DIR>          ..
02/02/2015  21:43               687 build.bat
13/11/2009  09:58                54 hello.hbc
13/11/2009  09:58                12 hello.hbp
30/03/2010  23:07               319 hello.prg
13/11/2009  09:58                 1 hello.rc
30/01/2015  15:43               411 ide.bat
26/10/2009  01:39               117 readme1st.txt
               7 arquivo(s)          1.601 bytes
               2 pasta(s)   15.204.347.904 bytes disponíveis

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>


Tem um build.bat, e um hello.hbp

O hello.hbp não deu certo, foi o primeiro que testei, então vamos ao build.bat

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>build
'FINDSTR' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.


Faltou um programa, já achei

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>dir c:\findst*.* /s/b
c:\Windows\System32\findstr.exe


Modificar o path e acrescentar a pasta do Windows

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>set PATH=%PATH%;c:\windows;c:\windows\system32

d:\CVSFiles\thmg\SAMPLES\Basics\Hello_World>set path
PATH=d:\tools\util;d:\cvsfiles\thmg\harbour\bin;d:\cvsfiles\thmg\mingw\bin;c:\windows;c:\windows\system32


Voilá.... Apareceu.

resultado.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 01 Fev 2017 12:04

Agora vamos tentar entender os BATs, tem até coisa nova (pelo menos pra mim) no BAT.
Até descobri novidade ontem, por coincidência

SETLOCAL
SET Temp1=%~dp0
SET Temp3=%Temp1%&SET Pos=0
SET /a Pos+=1
ECHO %Temp3%|FINDSTR /b /c:"SAMPLES" >NUL
IF DEFINED Temp3 GOTO Loop


SETLOCAL = torna as variáveis de ambiente de uso local
SET TEMP1 e SET TEMP2 - criam variáveis, os parâmetros são novidade pra mim mas não vou tentar entender
IF DEFINED - é pra testar se a variável existe

IF ERRORLEVEL 1 (
SET Temp3=%Temp3:~1%
IF DEFINED Temp3 GOTO Loop
SET Pos=0
)


Esse é interessante, o parêntesis pode ser usado como continuação de linha nesse caso.
O BAT fica parecendo linguagem de programação.

De qualquer forma, parei de tentar entender essa parte por aí.
Não quero fazer curso de BAT, quero apenas compilar.
Se compilar um exemplo é decidido por BAT, significa que nem sequer vou saber compilar

Considero isso um grande erro, o usuário vai compilar e nem sequer sabe como está fazendo isso.
Isso é desaprender Harbour, e não aprender a compilar com minigui.

De qualquer forma, vou tentar entender o resto.
Se eu conseguir, no final crio uma forma mais fácil de fazer tudo isso, que dê pra entender.

Só considero uma coisa:
Se é pra criar um BAT pra compilação em cada pasta de exemplo, seria melhor um BAT completo do exemplo.
Considerando que um BAT vai ocupar 32KB de disco, não adianta economizar nele, só se fosse pra deixar mais claro.
Mas vou tentar alterar isso no final.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 01 Fev 2017 12:21

Na falta de outra opção, coloquei pra mostrar o texto que está executando, com ECHO e PAUSE.

:WithOutParam
FOR %%x IN (*.hbp) DO ( ECHO Building %%x
ECHO %Temp1%\build.bat %%x
PAUSE
IF "%NoRun%"=="" CALL %Temp1%\build.bat %%x
IF NOT "%NoRun%"=="" CALL %Temp1%\build.bat /n %%x )
GOTO End


Building hello.hbp
d:\CVSFiles\thmg\build.bat hello.hbp
Pressione qualquer tecla para continuar. . .


Sei lá, esquisito, à primeira vista poderia ser algo assim:
FOR %%A IN (*.HBP) DO %MB_ROOT%\BUILD.BAT %%A


Ou colocar a pasta root da minigui no path, e nem precisar do bat local.
Ainda verificando.
Como os BATs usam recursos que não conheço.... ainda estudando.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 01 Fev 2017 12:52

É incrível. Achei a solução para os meus BATs.

A compilação da minigui/hmg é tão esquisita, que ninguém soube me informar qual era o problema.
Achei em hmg32.hbc. Tem mais duas LIBs do mingw

-lmsvfw32 -lvfw32


Estou preparando novos BATs, quando estiver pronto coloco aqui.
Se der tudo certo, vai simplificar muuuuito tudo isso.

Só vou adiantar que criei outra variável pra indicar hmg ou hmgextended
Aliás, nem dá pra adiantar mais nada, ainda estou criando.... rs
SET HB_MINIGUI_VER=xxxxx
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 01 Fev 2017 14:25

Ainda estou começando com os testes dos BATs.
Favor verificar aqui:

http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=17994
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 01 Fev 2017 16:27

Já ok usando meu bat padrão.
Mas ainda no Harbour 3.2 que acompanha a hmg.

mgcompile hello hbmisc.hbc hbhpdf.hbc hbwin.hbc
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 01 Fev 2017 16:46

Primeira tentativa com Harbour 3.4, apenas alterei o path do Harbour e mingw.

mgcompile hello hbwin.hbc xhb.hbc hbmisc.hbc hbhpdf.hbc
d:/cvsfiles/thmg/lib/win/mingw/libhmg.a(h_tole.o):h_tole.c:(.data+0x378): undefined reference to `_HB_FUN_WIN_P2N'
d:/cvsfiles/thmg/lib/win/mingw/libhmg.a(h_windows.o):h_windows.c:(.data+0x1458): undefined reference to `_HB_FUN_CALLDLL32'
hbmk2: Hint: Correct possibly mistyped function name(s):
       WIN_P2N() -> win_Prn()
hbmk2: Error: Referenced, missing, but unrecognized Harbour function(s):
       WIN_P2N(), CALLDLL32()


Provavelmente funções renomeadas, Não achei em lugar nenhum, a não ser no 3.2. Pelo menos a segunda é certeza CallDll32().
Criar tapa buraco

------- file ze_Harbour34.prg
FUNCTION CallDll32( ... ) ; RETURN CallDll( ... )
FUNCTION Win_P2N( ... ); RETURN Win_Prn( ... )


Salvei em thmg\source, já vai fazer parte da lib hmg, senão terei que mexer em tudo que é projeto.

Agora compiicou um pouqquinho, mas tem jeito pra tudo.

mgcompile hello hbwin.hbc xhb.hbc hbhpdf.hbc hbmisc.hbc
d:/harbour/lib/win/mingw/libhbmisc.a(calldll.o):calldll.c:(.text+0x40): multiple definition of `_HB_FUN_CALLDLL'
d:/harbour/lib/win/mingw/libxhb.a(xhbdll.o):xhbdll.c:(.text+0x0): first defined here


Deu duplicidade de funções. Mesma função no Harbour e na hmg.
Não foi minha rotina tapa-buraco, ela cria CallDll32().
Essa é a única função onde o Harbour 3.4 tem duas com mesmo nome, e uma delas é na compatibilidade com xHarbour.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 01 Fev 2017 17:38

Voilá.... Harbour 3.4

Indiquei a compatibilidade xHarbour apenas como LIB e não com o hbc, e somente no final.

mgcompile hello hbwin.hbc hbhpdf.hbc hbmisc.hbc -lxhb


Bom.... se minigui obriga tudo isso pra um simples Hello World... então tudo isso pode ser colocado no mgcompile.bat

Testes até agora:

- Ok com Harbour que vém na hmg
- Ok com Harbour 3.4

Minha situação agora:

- Harbour 3.4 de sempre, em d:\harbour
- Compilador msvc 2010 em d:\harbour\comp\msvc
- Compilador mingw 5.3, em d:\harbour\comp\mingw
- Compilador bcc em d:\harbour\comp\bcc
- hmg 3.4.3 em d:\cvsfiles\thmg (salvei no github)
- hmg extended 17.01 em d:\cvsfiles\thmgx (salvei no github)
- hmg OOHG (não sei versão) em d:\cvsfiles\toohg (salvei no github)
- Meus BATs mgconfig, mgcreate e mgcompile em d:\cvsfiles\hmg-bat (salvei no github)
- Em d:\tools\util BATs com mesmo nome, só pra não ter que configurar path novo

TODAS as LIBs direcionadas pra lib\win\compilador, pras HMG cada uma em sua pasta LIB

Se as HMG e o Harbour deixassem, poderia escolher qualquer compilador a qualquer momento, usando mgconfig.bat.
Não depende de mim, depende dos fontes passarem no compilador. MINGW é garantido.

Meus bats aqui: https://github.com/JoseQuintas/HMG-BAT e se o github deixar pra acesso externo, tudo aqui https://github.com/JoseQuintas?tab=repositories

agora vamos brincar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes

Primeiros testes HMG 3.4.3

Mensagempor Nascimento » 01 Fev 2017 19:21

amigo quincas uso a minigui extended a 2 anos e uso da maneira antiga do clipper
seto em variaveis de ambiente includes,libs e bins

depois mudo o minigui.hbc que vem so coloco 2 '#' na frente de 2 linhas

compilo via bat e hbp normalmente minigui extended+mingw

# hmg paths
{win}incpaths=include
{win}libpaths=lib
#{win}incpaths=${hb_curdir} //aqui

# hmg resources
#{win}sources=${hb_curdir}_temp.o // aqui


desta maneira nao fico preso ao .bat que vem na minigui
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Primeiros testes HMG 3.4.3

Mensagempor JoséQuintas » 03 Fev 2017 09:05

Legal. Então se estiver faltando alguma coisa vai saber identificar.

A intenção dos BATs é ficar fácil testar e entender.
Dá pra ver o comando inteiro no BAT, e seria só colocar num HBP.

Dá pra testar os BATs sem modificar nada nos arquivos originais.
Ou melhor... acaba tendo que mover as LIBs originais de LIB pra LIB\win\compilador

Nas últimas modificações, pra HMG, HMG Extended e OOHG.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18159
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1215 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro