Página 1 de 1

Unificar versões do Harbour

Enviado: 27 Fev 2024 22:12
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

Unificar versões do Harbour

Enviado: 27 Fev 2024 22:32
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

Unificar versões do Harbour

Enviado: 28 Fev 2024 10:06
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

Unificar versões do Harbour

Enviado: 28 Fev 2024 13:21
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.

Unificar versões do Harbour

Enviado: 28 Fev 2024 13:27
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.