Página 1 de 2

Compartilhando Experiências com HBMK2

Enviado: 06 Nov 2009 19:06
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
# ---------------------------

Re: Compartilhando Experiências com HBMK2

Enviado: 07 Nov 2009 18:09
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.

Re: Compartilhando Experiências com HBMK2

Enviado: 09 Nov 2009 21:07
por asimoes
Diretiva /u como funciona no hbmk2?

Re: Compartilhando Experiências com HBMK2

Enviado: 11 Nov 2009 16:58
por sygecom
Para que serve esse /u ?

Re: Compartilhando Experiências com HBMK2

Enviado: 11 Nov 2009 18:49
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"

Re: Compartilhando Experiências com HBMK2

Enviado: 25 Nov 2009 19:49
por sygecom
Tente colocar direto em:
-prgflag=<f>

Re: Compartilhando Experiências com HBMK2

Enviado: 25 Nov 2009 20:41
por asimoes
sygecom escreveu:Tente colocar direto em:
-prgflag=<f>
Não funciona.

Re: Compartilhando Experiências com HBMK2

Enviado: 25 Nov 2009 20:42
por sygecom
Como você fez ?

Re: Compartilhando Experiências com HBMK2

Enviado: 26 Nov 2009 05:12
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

Re: Compartilhando Experiências com HBMK2

Enviado: 30 Nov 2009 19:50
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.

Re: Compartilhando Experiências com HBMK2

Enviado: 16 Mar 2010 13:30
por ctoas
Boa tarde amigos.

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

Obrigado

[]'s

Re: Compartilhando Experiências com HBMK2

Enviado: 27 Mar 2010 13:49
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

Re: Compartilhando Experiências com HBMK2

Enviado: 31 Mar 2010 13:35
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 

Re: Compartilhando Experiências com HBMK2

Enviado: 03 Abr 2010 10:15
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?

Re: Compartilhando Experiências com HBMK2

Enviado: 03 Abr 2010 11:53
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.