Unificar versões do Harbour

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

Moderador: Moderadores

Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Unificar versões do Harbour

Mensagem por sygecom »

Estava aqui pensando em uma dica do José Quintas, de eu usar o compilador harbour 64bits para gerar meus sistemas 32bits.

Atualmente tenho 3 ambiente de compilação Harbour e, cada um eu tenho .bat mas tenho um único .hbp para compilar com todos. Essa unificação usando o harbour 64bits, vai deixar meu ambiente de compilação mais rapido, isso quando gero tudo do zero, depois é incremental e vida que segue.

1-Harbour+Bcc74

Código: Selecionar todos

SET PATH=D:\devel\bcc74\bin;d:\devel\hb32_bcc74\bin;%PATH%
SET INCLUDE=%INCLUDE%;d:\devel\hb32_bcc74\include;D:\devel\bcc74\include;D:\devel\bcc74\include\sys
SET LIB=%LIB%;D:\devel\bcc74\lib;d:\devel\hb32_bcc74\lib
SET HB_PATH=d:\devel\hb32_bcc74
SET HRB_DIR=d:\devel\hb32_bcc74
%SystemRoot%\system32\cmd.exe
2-Harbour+Mingw32

Código: Selecionar todos

SET PATH=D:\devel\MinGW32\bin;d:\devel\hb32\bin;%PATH%
SET INCLUDE=%INCLUDE%;d:\devel\hb32\include;D:\devel\MinGW32\include;D:\devel\MinGW32\include\sys
SET LIB=%LIB%;D:\devel\MinGW32\lib;d:\devel\hb32\lib
SET HB_PATH=d:\devel\hb32
SET HRB_DIR=d:\devel\hb32
%SystemRoot%\system32\cmd.exe
3-Harbour+Mingw64

Código: Selecionar todos

SET PATH=D:\devel\MinGW64\bin;d:\devel\hb64\bin;%PATH%
SET INCLUDE=%INCLUDE%;d:\devel\hb64\include;D:\devel\MinGW64\include;D:\devel\MinGW64\include\sys
SET LIB=%LIB%;D:\devel\MinGW64\lib;d:\devel\hb64\lib
SET HB_PATH=d:\devel\hb64
SET HRB_DIR=d:\devel\hb64
%SystemRoot%\system32\cmd.exe
1-Pelo que entendi, eu posso usar a BIN e INCLUDE do meu hb64 para todos.
2-Tenho que levar as lib da versão BCC e MINGW32 para a pasta da lib 64 cada uma com seu nome que já gera separado.

Agora vem minha duvida, como defino nos meus .BAT que quero que use o compilador BCC e 32 bits ?

Lendo o help do hbmk2, pelo que entendi tenho que ter as seguintes variáveis de ambiente:
HB_COMPILER=bcc
HB_CPU=x86

Acredito que o .BAT ficaria mais ou menos assim, se alguém poder me dar uma luz agradeço.

Código: Selecionar todos

SET PATH=D:\devel\bcc74\bin;d:\devel\hb64\bin
SET INCLUDE=d:\devel\hb64\include;D:\devel\bcc74\include;D:\devel\bcc74\include\sys
SET LIB=D:\devel\bcc74\lib;d:\devel\hb64\lib\bcc\
SET HB_PATH=d:\devel\hb64
SET HRB_DIR=d:\devel\hb64
SET HB_COMPILER=bcc
SET HB_CPU=x86
%SystemRoot%\system32\cmd.exe
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Unificar versões do Harbour

Mensagem por sygecom »

Fui para os testes e acho que deu certo.
Agora reduzi mais um pouco meu .BAT

Código: Selecionar todos

SET PATH=D:\devel\bcc74\bin;d:\devel\hb64\bin
SET INCLUDE=d:\devel\hb64\include;D:\devel\bcc74\include;D:\devel\bcc74\include\sys
SET LIB=D:\devel\bcc74\lib;d:\devel\hb64\lib\bcc\
SET HB_COMPILER=bcc
SET HB_CPU=x86
%SystemRoot%\system32\cmd.exe
E acredito que não precisa do d:\devel\hb64\lib\bcc\, por que HB_COMPILER informa o caminho lib, vou testar removendo tudo e se não der certo, deixo apenas: d:\devel\hb64\lib
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Unificar versões do Harbour

Mensagem por sygecom »

Reduzi mais um pouco e ainda funcionando bem, acredito que essa mudança foi muito boa para min, de fato compila mais rápido.

Código: Selecionar todos

SET PATH=D:\devel\bcc74\bin;d:\devel\hb64\bin
SET INCLUDE=d:\devel\hb64\include;D:\devel\bcc74\include;D:\devel\bcc74\include\sys
SET LIB=D:\devel\bcc74\lib
SET HB_COMPILER=bcc
SET HB_CPU=x86
%SystemRoot%\system32\cmd.exe
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Unificar versões do Harbour

Mensagem por JoséQuintas »

O harbour separa tudo.
Uma coisa é a geração, outra coisa é o uso, no uso é até mais flexível.

Por exemplo aqui uso só 32 bits, mas baixo o mingw 32/64.
32 bits é meu default.
fontes do harbour estão em d:\github\harbour32

Defino pra onde será gerado o harbour

Código: Selecionar todos

SET HB_INSTALL_PREFIX=d:\harbour
Hoje não, mas cheguei a gerar com MSVC 2015 também.
Deixo compiladores em \harbour\comp
pode deixar borland c, mingw, msvc, borland C 64 bits, etc.
pode deixar todos no path, então vai preferir deixar o do xharbour como primeiro

Se não houver nada contrário, o primeiro que for encontrado no path será usado
É aí que entra SET HB_COMPILER

Apenas identifique qual será o último, por exemplo, mingw64, deixe pro final.

A partir daí pode gerar todos.

Código: Selecionar todos

SET HB_COMPILER=msvc
win-make install
SET HB_COMPILER=bcc
win-make install
SET HB_COMPILER=mingw
win-make install
SET HB_COMPILER=mingw64
win-make install
Pronto.
Nesse momento o harbour está gerado pra tudo.
harbour.exe e hbmk2.exe serão em mingw64, o último usado
na pasta lib vão existir:
lib\win\msvc
lib\win\bcc
lib\win\mingw
lib\win\mingw64

Agora vai se tratar do uso, compilando seus programas
Pode definir o default, qual vai usar o tempo todo, no dia a dia

Código: Selecionar todos

SET HB_COMPILER=mingw
No dia que adotar outro como default, é só alterar HB_COMPILER.

Mesmo assim, pode fazer testes eventuais:

hbmk2 aplicativo.hbp -comp=mingw
hbmk2 aplicativo.hbp -comp=bcc
hbmk2 aplicativo.hbp -comp=mingw64

Então o importante a decidir é:
1) O último ser 64 bits, porque harbour.exe e hbmk2.exe em 64 bits serão mais potentes
2) gerar as LIBs, porque sem as LIBs não funciona

Acima, não geramos pra bcc64, borland c 64 bits.
Supondo que colocasse o bcc64 e tentasse gerar:
hbmk2 aplicativo.hbp -comp=bcc64

Vai gerar os fontes em C, vai compilar os fontes em C, mas vai dar erro na linquedição, porque não existem as libs pra bcc64.

Conclusão:
qualquer versão de harbour/xharbour gera pra qualquer compilador
compilar os fontes em C, depende de escolher o compilador e de ter o compilador instalado
linqueditar.. aí depende de ter as libs
Se tiver tudo, pode usar tudo.

A exceção.... é não misturar versões. não pode ter pra bcc 5.5 e bcc 5.8 ao mesmo tempo, ou mingw 7 e mingw 10
O mingw tem versão específica que vém 32 e 64 bits juntos, pode baixar de uma vez.
Aqui, como te mostrei, baixo o mingw que vém 32 e 64 bits num mesmo download.
Não sei se o harbour vai identificar quando baixar separado, talvez salvar uma em harbour\comp\mingw e outra em harbour\comp\mintw64, mas vai ter que testar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Unificar versões do Harbour

Mensagem por JoséQuintas »

Importante que esqueci:

Essas variáveis podem valer pra Xharbour também.
SET HB_INSTALL_PREFIX
SET HB_COMPILER
e principalment o PATH

harbour e xharbour começaram juntos, por muito tempo, então essa parte básica deve valer pra os dois.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder