Compartilhando Experiências com HBMK2

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Compartilhando Experiências com HBMK2

Mensagem por asimoes »

Amigos,

O intuito deste tópico é compartilhar experiências com a criação de scripts de geração de executáveis usando o HBMK2
Será muito bem vindo outros scripts que possam auxiliar os nossos colaboradores novos e veteranos.
Por exemplo eu preciso de um para hwgui, alguém tem?

Fiz um "script" para um sistema de controle de ponto que está em HBMAKE e XDEV, agora para HBMK2

Este sistema foi feito usando a Lib MiniGui.

Obs. Eu sempre usei desde o inicio o hbmake do xharbour, mas já estava na hora de aprender harbour e por seguinte o hbmk2
Ainda estou aprendendo!

Para ajudar na criação do executável criei uma bat:

APH.BAT
SET HB_PLATFORM=win
DEL ALARME.EXE
C:\MINIGUI\HARBOUR\BIN\HBMK2 ALARME.HBM

SCRIPT.HBM

Código: Selecionar todos

# ---------------------------
# Nome do Executável
# ---------------------------
-oalarme
# ---------------------------
# Bibliotecas
# ---------------------------
-ltsbrowse
-lpropgrid
-lminigui
-lgtgui
-llibct
-lhbprinter
# ---------------------------
# Caminhos dos Includes
# ---------------------------
-incpath=c:\minigui\include;c:\minigui\harbour\include
# ---------------------------
# Caminho das Libs da MiniGui
# ---------------------------
-Lc:\minigui\lib;c:\minigui\harbour\lib
# ---------------------------
# Outros Parâmetros
# ---------------------------
-head=native
-gtgui
-n
-nowarn
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
alarme
alarme.rc
ttaskbarnotifierclass
ttimerclass
wndproc
# ---------------------------
# Fim
# ---------------------------
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compartilhando Experiências com HBMK2

Mensagem por sygecom »

Olá Asimoes,
Vou postar como eu uso, talvez não seja a melhor maneira, mas tem me atendido muito bem. Como tenho vários ambientes de compilação como Windows, Linux, Bcc55,Bcc58,Bcc60,MSVC, MINGW e etc... Então defino o meu PATH de compilação na hora da própria compilação de cada aplicativo.

Secript Genérico para todas os ambientes de compilação:
script.hbc

Código: Selecionar todos

{bcc|allmsvc|allmingw}libs=hwgui procmisc hbmzip hbziparc hbct hbtip hbwin xhb hbhpdf libhpdf libpng hbblat blat hbgd bgd
{allmingw}libs=libhwgui libprocmisc libhbmzip libhbziparc libhbct libhbtip libhbwin libxhb libhbhpdf liblibhpdf liblibpng libhbblat libblat libhbgd libbgd
{win}gt=gtgui
libpaths=${hrb_dir}\contrib\hwgui\lib
incpaths=${hrb_dir}\contrib\hwgui\include
run=yes
Esse arquivo SCRIPT.HBC eu apenas coloco dentro da pasta junto com os .PRG do meu projeto e tenho um .BAT que chamo de: COMP.BAT que tem a seguinte linha:

Código: Selecionar todos

hbmk2 -inc -st -trace -oSISTEMA *.prg SISTEMA.RC
Esse .BAT e esse .HBC eu uso para compilar meu projeto com BCC, MSVC e MINGW sem mudar uma letra, apenas chamo o ambiente que vou compilar com outro .BAT que são os exemplos abaixo:

Exemplo BCC :

Código: Selecionar todos

@echo off
SET PATH=%PATH%;d:\devel\BCC55\BIN;d:\devel\BCC55\LIB;d:\devel\BCC55\LIB\PSDK;d:\devel\BCC55\INCLUDE;d:\devel\hb-bcc\bin;d:\devel\hb-bcc\lib;d:\devel\hb-bcc\include;d:\devel\BISON\BIN
SET INCLUDE=%INCLUDE%;d:\devel\Bcc55\include;d:\devel\hb-bcc\include
SET LIB=%LIB%;d:\devel\Bcc55\lib;d:\devel\BCC55\LIB\PSDK;d:\devel\hb-bcc\lib
SET HRB_DIR=d:\devel\hb-bcc
SET HB_INC_PGSQL=d:\pgsql\include
%SystemRoot%\system32\cmd.exe
Exemplo MSVC:

Código: Selecionar todos

@echo off
cd\devel
cd msvc\VC
call vcvarsall.bat"
cd\sygecom\sistema
SET PATH=d:\devel\hb-msvc\bin;d:\devel\hb-msvc\lib;d:\devel\hb-msvc\include;%PATH%
SET INCLUDE=%INCLUDE%;d:\devel\hb-msvc\include
SET LIB=%LIB%;d:\devel\hb-msvc\lib
SET HRB_DIR=d:\devel\hb-msvc
SET HB_INC_PGSQL=d:\pgsql\include
%SystemRoot%\system32\cmd.exe
Exemplo Mingw:

Código: Selecionar todos

@echo off
SET PATH=%PATH%;d:\devel\MINGW\BIN;d:\devel\MINGW\LIB;d:\devel\MINGW\INCLUDE;d:\devel\hb-mingw\bin;d:\devel\hb-mingw\lib;d:\devel\hb-mingw\include
SET INCLUDE=%INCLUDE%;d:\devel\MINGW\include;d:\devel\hb-mingw\include
SET LIB=%LIB%;d:\devel\MINGW\lib;d:\devel\hb-mingw\lib
SET HB_PATH=d:\devel\hb-mingw
SET HRB_DIR=d:\devel\hb-mingw
SET HB_INC_PGSQL=d:\pgsql\include
SET HB_INC_BLAT=D:\devel\blat262\full\source
%SystemRoot%\system32\cmd.exe
Resumindo, chamo o .BAT do ambiente que quero compilar e depois apenas executo o COMP.BAT que já está tudo pré definido e sai compilando, e detalhe sem precisar apagar OBJ para recompilar com ambientes diferentes por que o HBMK2 já gerencia isso automaticamente. E o HBMK2 identifica automaticamente esse arquivo .HBC

Depois tem em outros projetos que uso algumas linhas no script.hbc que é um pouco diferente, como por exemplo se eu desejar compilar junto um .PRG que está em outra pasta diferente do meu projeto coloco a seguinte linha no script.hbc:

Código: Selecionar todos

sources=d:\devel\ads\xAds.prg
Se pegar o Help do HBMK2 tem muitas outras facilidades que ajuda no dia a dia, mas cada caso é um caso, outra coisa boa do HBMK2 é que não precisa definir o .LIB em cada nome de LIB que no caso posso usar o mesmo script para linux também. Alias em Linux o HBMK2 compila muito mas muito rápido mesmo, talvez seja o harbour que está rápido mas comparando ao hbmake do xHarbour digo que fica uns 70% mais rápido na hora de compilar em Linux.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Compartilhando Experiências com HBMK2

Mensagem por asimoes »

Diretiva /u como funciona no hbmk2?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compartilhando Experiências com HBMK2

Mensagem por sygecom »

Para que serve esse /u ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Compartilhando Experiências com HBMK2

Mensagem por asimoes »

Olá Leonardo,
sygecom escreveu:Para que serve esse /u ?
Este comando no clipper e no harbour significa que será usado em toda compilação o include stdsmf.ch (exemplo)

s:\clip5_2\bin\clipper $< /m /p /n /b /ustdsmf.ch

No harbour:

harbour /?

/u+<file> add command def set from <file>

o clipper:

Clipper (R) 5.2e
Copyright (c) 1985-1995, Computer Associates International, Inc.
Microsoft C Floating Point Support Routines
Copyright (c) Microsoft Corp 1984-1987. All Rights Reserved.

Options: /a automatic memvar declaration
/b debug info
/d<id>[=<val>] #define <id>
/es[<level>] set exit severity
/i<path> #include file search path
/l suppress line number information
/m compile module only
/n no implicit starting procedure
/o<path> object file drive and/or path
/p generate pre-processed output (.ppo) file
/q quiet
/r[<lib>] request linker to search <lib> (or none)
/s syntax check only
/t<path> path for temp file creation
/u[<file>] use command def set in <file> (or none)
/v variables are assumed M->
/w enable warnings
/z supress shortcutting
@<file> compile list of modules in <file>

Não havendo a necessidade de inclusão nos fontes o comando #include "stdsmf.ch"
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compartilhando Experiências com HBMK2

Mensagem por sygecom »

Tente colocar direto em:
-prgflag=<f>
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Compartilhando Experiências com HBMK2

Mensagem por asimoes »

sygecom escreveu:Tente colocar direto em:
-prgflag=<f>
Não funciona.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compartilhando Experiências com HBMK2

Mensagem por sygecom »

Como você fez ?
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Compartilhando Experiências com HBMK2

Mensagem por asimoes »

Por exemplo usando o include visual2.ch (da visuallib)

-prgflag=/u+visual2.ch

Eu estive lendo o changelog e verifiquei que tinham resolvido o problema do /+u, mas me parece que ainda está com problema.
Quando eu informo o comando dá erro na compilação.

Por enquando só funciona se informado em cada prg :

#include "visual2.ch"

[]s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compartilhando Experiências com HBMK2

Mensagem por sygecom »

É, tenho que baixar e compilar novamente para poder ter certeza, com a que testei aqui e que uso não fungou, mas já está um pouco desatualizada.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
ctoas
Usuário Nível 2
Usuário Nível 2
Mensagens: 52
Registrado em: 09 Mai 2005 16:22
Localização: São Paulo
Contato:

Re: Compartilhando Experiências com HBMK2

Mensagem por ctoas »

Boa tarde amigos.

Alguém teria um exemplo de script de HBMK2 para Linux ?

Obrigado

[]'s
hervedo
Usuário Nível 1
Usuário Nível 1
Mensagens: 35
Registrado em: 23 Mar 2010 17:48
Localização: Santa Catarina

Re: Compartilhando Experiências com HBMK2

Mensagem por hervedo »

boa tarde..
qual script se faz pra fazer uma biblioteca .lib?

pra mim esta gerando um arquivo libfuncoes.a
no xharbour eu fazia e ele gerava como funcoes.lib

[]s
jamazevedo
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 29 Dez 2005 16:50
Localização: Manaus - AM

Re: Compartilhando Experiências com HBMK2

Mensagem por jamazevedo »

Eu fiz assim para gerar lib:

Código: Selecionar todos

# compila so os alterados 
-inc 

# a linha abaixo informa que será lib em vez de executável
-hblib 
 
# nome da lib 
-orotinas
 
# fontes que serao compilados e licados na lib 
rotinas.prg 
preimpre.prg 
cidades.prg 
situacao.prg 
logs.prg 
impresso.prg 
unidades.prg 
estados.prg 
extenso.prg 
recibo.prg 
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Re: Compartilhando Experiências com HBMK2

Mensagem por jairfab »

Este Hbmk2 nao funciona para xharbour ? ou existe um semelhante , com o make seria possivel fazer um script parecido com este do hbmk2?
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
jamazevedo
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 29 Dez 2005 16:50
Localização: Manaus - AM

Re: Compartilhando Experiências com HBMK2

Mensagem por jamazevedo »

No xHarbour você executa o hbmake. Ele abrirá uma interface para você configurar seus arquivos de compilação. Exemplos: hbmake menuprojeto.bc -e // configura um projeto para execução.
hbmake minhalib.bc -el // configura uma lib.
hbmake menuprojeto.bc // compila e linca o projeto.
______________________________________________________
Usando: Linux Ubuntu 18.04, Harbour 3.2.0dev r1811161533
______________________________________________________
José Airton de Menezes Azevedo
Manaus - AM
Responder