Clipper On Line • Ver Tópico - HBMK2 no XHarbour

HBMK2 no XHarbour

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

HBMK2 no XHarbour

Mensagempor JoséQuintas » 03 Ago 2019 23:37

Minha intenção em mostrar isso é pelo seguinte:

Não precisamos ficar trabalhando diferente, só porque usamos Harbour/Xharbour, ou outro compilador C.
Podemos trabalhar do mesmo jeito, "falando a mesma língua".

Eu considero esses recursos fantásticos, principalmente ao comparar com os makes do XHarbour.

Até mesmo pra uso em IDE, bastaria a IDE criar/chamar os HBMK2, nem precisaria inventar nada diferente.
O harbour.exe aceita o parâmetro -ge1, que fornece uma saída de erros igual ao compilador C, acredito que poderia ser simples alterar no Xharbour - pelos desenvolvedores.
Numa IDE o resultado seria este:

xharbour.png


Nesse caso, o PNotepad sem uma configuração pré-definida que captura erros num formato estilo compilador C.
Como o harbour tem a opção -ge1 pra isso, capturou automático, e é só clicar na mensagem de erro que abre o fonte correspondente a linha do erro.

Isso só é possível pelo harbour.exe ter a opção -ge1, e pelo HBMK2 também estar preparado pra isso.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 03 Ago 2019 23:54

Mais complementos:

Porque testei com BCC 5.82?

Binários do mingw.... pensei que eram iguais, mas não são.
Parece que existe diferença, dependendo de qual mingw 7.3 for baixada, e gerar xHabour do zero iria complicar demais pra mim.

E msvc - Microsoft Visual C - é um download muito grande.

Pra compilação dar certo, precisa usar exatamente o mesmo compilador C dos binários das LIBs.
BCC 5.82 não tem erro, binários BCC 5.82 precisam do BCC 5.82, foi a opção mais prática.
Eu não iria ficar pesquisando como gerar o XHarbour do zero, só pra esse teste.

Todos sabem que o Harbour 3.4 oficial não pode mais ser gerado usando BCC.
Apenas não tem alguém que use BCC e que envie o que precisa ser alterado.
Como mostrei aqui, a parte de geração em BCC continua, não foi descartada.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 04 Ago 2019 00:16

E uma coisa puxa outra....

xharbour.png


O que essa tela mostra?

-comp=bcc compilou com Borland C 5.82 normalmente, linqueditou usando ILINK.

-comp=mingw.... deu erro... porque falta o compilador... o gcc.exe chamado na linha que foi mostrada.

Exatamente igual no Harbour e no XHarbour !!!
O harbour.exe está pronto pra qualquer compilador C, só depende de ter o compilador e as LIBs instaladas.

No momento minha máquina tem:

Harbour 3.4
XHarbour
Borland C 5.82
Mingw 8.1

Não tenho as LIBs do Harbour pra BCC 5.82
Não tenho as LIBs do Xharbour pra mingw 8.1

Mas convivem normalmente na mesma máquina, desde que tomados os devidos cuidados.
SET PATH, SET HB_INSTALL_PREFIX são os que definem Harbour ou XHarbour, estes são os mais importantes
SET HB_COMPILER e SET HB_COMPILER_VER são os que definem o compilador C padrão, mas podemos usar -comp=mingw ou -comp=bcc
Para o HBMK2, TODOS os compiladores C podem estar no PATH, será usado o que for definido, ou na falta disso, ele escolhe automático
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 04 Ago 2019 01:45

Não reparei, mas na última tela continha um erro na compilação com BCC.
É que ia fazer um teste mais complicado.... e ficou o parâmetro de multithread
Acho que o hbmk.hbc já dá uma idéia do "testezinho"

mt=yes
gui=yes
strip=yes
compr=yes
libpaths=d:/cdrom/fontes/integra/sefazclass
libpaths=d:/cdrom/fontes/integra/josequintas
libpaths=d:/cdrom/fontes/integra/josequintas/bostaurus
libpaths=d:/github/allgui/hmg3
libpaths=d:/github/allgui/hmge
libpaths=d:/github/allgui/hwgui
libpaths=d:/github/allgui/oohg
libs=hbcurl hbmzip hbssl hbxdiff libnf gtwvg gtwvw libnf ct
libs=hbhpdf hbmzip hbxdiff misc hbzebra
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 04 Ago 2019 01:54

Uia, quase deu certo.
XHarbour com GTWVG.
Gerou como GTWVG, mas.... faltou definir gtwvg como default pra não prender a janela console.
Não sei como isso é feito no XHarbour.

xharbour.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 04 Ago 2019 02:11

Talvez interesse ver mais opções do hbmk2.
criar import lib, resource, ícone, manifest, bibliotecas dinâmicas, programa multi-idioma, numeração de versão automática, deixar o prg de acordo com o sistema operacional, formatar os nomes de funções de acordo com o Uppercase/Lowercase dos HBX gerados (extraído do fonte das funções), etc. etc.

hbmk2 -help ou hbmk2 -longhelp

Manual do hbmk2

https://github.com/vszakats/harbour-core/blob/master/utils/hbmk2/doc/hbmk2.pt_BR.md
Nota de Moderação:
JoséQuintas: Mensagem editada pra substituir txt anexado pelo texto oficial on-line
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 04 Ago 2019 03:45

Esqueci de um importante, mas quem está acostumado pode confirmar se os parâmetros são esses mesmos

xharbour\bin\hbmk.hbc

PRGFLAGS=-D__XHARBOUR__
CFLAGS=-D__XHARBOUR__

Perceberam?
no hbmk.hbc da pasta bin... vai ser aplicado em tudo que for compilado com hbmk2
não precisaria colocar em mais lugar nenhum, nem em LIB

E o Harbour?
No Harbour vai ter outro hbc na pasta harbour\bin que não vai conter isso.

Simplificação geral de compilação.
Basta o hbmk2.exe junto com seu hbmk.hbc para o XHarbour.

Ou.... no hbc das libs.... indicar pra usar isso quando for XHarbour

{xhb}PRGFLAGS=-D__XHARBOUR__
{xhb}CFLAGS=-D__XHARBOUR__
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 05 Ago 2019 06:25

Atualização de informação:

SET HBMK_OPTIONS=-xhb
SET HB_INSTALL_PREFIX=d:\xharbour

O hbmk2.exe não precisa de harbour.exe, usa ele próprio pra compilar.
Ao adicionar a opção -xhb passa a usar o arquivo harbour.exe defindo no HB_INSTALL_PREFIX
E dá pra fixar isso usando HBMK_OPTIONS, assim no XHarbour fica exatamente igual no Harbour.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 05 Ago 2019 19:26

Esqueci de dizer......
O HBMK2 é preparado pra detectar o idioma do país aonde está sendo usado.
Mas pode ser modificado por SET HB_LANG=EN
Ele foi criado usando o recurso que ele tem de multi-idioma.
Aqui configuro pra inglês....

hbmk2en.png


Mas se não indicar nada.... o default é este:

hbmk2pt.png
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 05 Ago 2019 19:32

Tem mais.....

hbmk2es.png


hbmk2it.png


hbmk2el.png


Como eu disse, sobre o HBMK2 e sobre o Harbour 3.4, foi feito pra todos.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 05 Ago 2019 19:37

Sobre tradução incompleta....
O recurso permite criar o programa pra "se traduzir" sozinho a partir de arquivos de texto.
Com certeza depende de usuários atualizarem o "tradutor", que também deve ter uma ferramenta integrada ao GITHUB pra isso.
O recurso cria o arquivo de configuração, contendo todos os textos default do programa, e aí é pegar o arquivo e colocar o texto equivalente a cada mensagem.
Na compilação/execução, esses textos passam a fazer parte do programa.
E a partir daí, o hbmk2 gerencia esse arquivo, sempre atualizando com novos textos encontrados no programa, e removendo os não mais necessários.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 07 Ago 2019 00:36

Faltou mostrar como se usa pra valer.

Uma opção é usar por linha de comando, e ver o que acontece.

um fonte:

hbmk2 test.prg

mais fontes:

hbmk2 test.prg test2.prg test3.prg

a pasta inteira:

hbmk2 *.prg

mas.... neste caso qual o nome do EXE? vai ser o primeiro fonte.... ou.... basta indicar o "output"

hbmk2 *.prg -otest

pode colocar os parâmetros que seriam do Harbour/Clipper/XHarbour

hbmk2 *.prg -otest -w3 -es2 -m -n

pode indicar LIBs, igual o padrão da linguagem C e/ou Clipper/Harbour/XHarbour

L=LIB, L maiúsculo é path, L minúsculo é nome de LIB
I=INCLUDE, I maiúsculo é path (ou minúsculo?)

hbmk2 *.prg -otest -w3 -es2 -m -n -Ld:\hwgui\lib -lhwgui -Id:\hwgui\include -ihwgui.ch

e o arquivo de projeto?
pode colocar esses mesmos comandos em um arquivo HBP, tanto faz se 1 por linha, 2, 3, 4, todos

---arquivo.hbp---
*.prg
-otest
-w3 -es2 -m -n
-Ld:\hwgui\lib
-lhwgui
-Id:\hwgui\include
-ihwgui.ch

nesse caso... hbmk2 arquivo.hbp

se precisar, pode adicionar mais comandos, pra testes diferentes do hbp

hbmk2 arquivo.hbp -rebuild -b -Ld:\minhaslibs -Id:\meusincludes

na linha de comando, dentro do hbp, tanto faz.
-b pra debug... pode querer usar o debug, eventual, não fixo no projeto, então coloca na linha de comando

Mas e se tiver PRG, C e RC ?

hbmk2 *.prg *.c *.rc -otest

E se for minigui com formulário? Só indicar pasta atual no include

hbmk2 *.prg *.c *.rc -otest -I.\

E por aí vai.
É olhar o resultado, e ver se precisa adicionar alguma coisa.

Todos os fontes da pasta entram no projeto?
Pode criar o HBP com um comando (ou dois ou três):

dir *.prg /s/b > projeto.hbp
dir *.c /s/b >> projeto.hbp
dir *.rc /s/b >> projeto.hbp

É simples assim: a lista do que entra no projeto.
E parâmetros, que permitem alterar o comportamento default.

Em xHarbour... ou acrescenta -xhb na linha de comando, ou já deixa fixo na máquina
SET HBMK_OPTIONS=-xhb

As LIBs padrão do compilador, e as pastas padrão do compilador já entram automaticamente (Harbour e compilador C)
Precisa SET HB_INSTALL_PREFIX=c:\xharbour // ou c:\harbour32 ou outra
e colocar no PATH as pastas BIN de harbour.exe e do(s) compilador(es) C. Podem ser TODOS

SET_HB_COMPILER=mingw define o compilador default, senão o HBMK2 pesquisa automático e pega o que encontrar
podemos alterar o default na linha de comando:

hbmk2 test.hbp -comp=mingw64

Lembrando: o Harbour compila, o compilador C linquedita... mas se não tiver LIB do Harbour pronta pro compilador C... não completa a linquedição.

Isso é o básico.
Já atende qualquer projeto Harbour ou XHarbour.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Testando XHarbour

Mensagempor JoséQuintas » 07 Ago 2019 00:39

E se quiser criar lib?
Só acrescentar -hblib

hbmk2 test.prg -hblib
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

HBMK2 no XHarbour

Mensagempor JoséQuintas » 03 Set 2019 13:45

IMPORTANTE:

Apenas nota inicial, que chama mais atenção que no final:
O HBMK2 contém/continha um bug.
Muito usuário e/ou LIB pode não atualizar o HBMK2 e pode ter esse bug.
Eventualmente o fonte não era atualizado na compilação.
Vi acontecer com usuário, mas agora que lembrei que ele pode estar usando versão VELHA do Harbour.

Recomendo usar do jeito que eu uso:

Por default, o HBMK2 cria uma pasta .HBMK, na pasta da compilação.
Ela fica escondida do Windows.
Não precisa dizer que ela vai ocupar espaço no backup, e algo mais.

eu defino minha pasta de trabalho:
-workdir=c:\temp

Todo lixo temporário vai pra c:\temp
Quando troco de aplicação, apago essa pasta temp
Não faço manual, tenho um aplicativo que faz isso por mim, pra eu não esquecer.
lixo temporário = PRG transformado em C, PRG compilado, resource compilado, e tudo mais que o HBMK2 cria temporário pra linquedição e pra economizar tempo da próxima vez.

O lado bom é ficar sem lixo no computador.

Pra quem estiver interessado, também criei um aplicativo pra apagar todas essas pastas do computador (pastas .HBMK)
Podem ser apagadas tranquilamente.
O HBMK2 cria tudo de novo o que precisar, caso não defina -workdir=c:\temp

IMPORTANTE:
Ao definir uma única pasta pra "lixo", TODOS os lixos de TODOS os aplicativos vão pra ela.
O problema é quando tem lixo com nome repetido, poderia misturar um aplicativo com o outro, por isso a limpeza da pasta ao trocar de projeto.

Aqui criei um EXE que é chamado antes da compilação, se a pasta atual for diferente da usada na compilação anterior, o c:\temp é apagado.
Simples e prático, e computador sem lixo.

Nota adicional:
-inc é compilação incremental
-rebuild é pra recriar tudo do zero - seria a opção de refazer todo lixo sem aproveitar o lixo anterior
ou del c:\temp.... mais prático (usando -workdir=c:\temp)
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 11880
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 12 vezes
Mens.Curtidas: 757 vezes

Anterior



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Ahrefs [Bot] e 1 visitante


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
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro