Clipper On Line • Ver Tópico - Organizando o ambiente: em HARBOUR

Organizando o ambiente: em HARBOUR

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

Moderador: Moderadores

 

Organizando o ambiente: em HARBOUR

Mensagempor JoséQuintas » 25 Set 2017 17:32

Primeiro passo: pra uma LIB, defina aonde vão ficar as "saídas" de lib e hbx, tanto faz a pasta da LIB.
Aqui eu uso em harbour\add-ons

1) HBP
O de sempre, lista de fontes, um HBC padrão para a lib, e o direcionamento de saída.

HMG Extended:
.\source\*.prg
.\source\*.c
...
-o${hb_install_prefix}\addons\lib\win\${hb_comp}\hmge
hmge.hbc

hbhpdf.hbc
hbzebra.hbc
hbwin.hbc
-hblib
-w1
-es2

-hbx=${hb_install_prefix}\addons\${hb_name}


O que tem de diferente acima?
-o${hb_install_prefix}\addons\lib\win\${hb_comp}\hmge

Isso vai ser substituído pela pasta do Harbour (hb_install_prefix), pelo nome do compilador (hb_comp)
poderia ser usado também o sistema operacional - plataforma (hb_plat)
Significa que as LIBs já vão ser separadas conforme o compilador C: mingw, mingw64, msvc, msvc64, bcc
Uso a pasta add-ons só pro HBX funcionar no hbmk2.
Outra opção seria deixar as LIBs dentro da pasta add-ons, foi feito pra isso.

Como dá pra perceber, para a LIB, tanto faz a pasta, isso funcionaria em qualquer pasta.

2) HBC
Description=hmge.hbc
incpaths=.\include
libs=hmge msvfw32 vfw32 hbmisc.hbc hbziparc.hbc hbhpdf.hbc hbct.hbc gtwvg hbwin
libpaths=${HB_INSTALL_PREFIX}\addons\lib\win\${hb_comp}
gui=yes
mt=yes


Mesma coisa da anterior, funciona em qualquer pasta
E busca as LIBs no mesmo lugar aonde o HBP criou, em harbour/add-ons/win/compilador
Aí já indicadas LIBs adicionais, pra rotinas em LIB da HMG Extended

Depois disso, só resta colocar o path da HMG extended dentro do hbmk.hbc, em harbour\bin

A mesma coisa pra HMG 3, HMG Extended, HWGUI, Fivewin, etc.

Tem mais de um Harbour na máquina?
Sem problemas, só configurar o HB_INSTALL_PREFIX, cada harbour\add-ons vai ter sua cópia de LIB compilada por ele.

Tem mais de um compilador C?
Sem problemas, ${hb_comp} já vai deixar cada lib no seu lugar

Vai trocar de Harbour?
Sem problemas, deixe no Harbour só a pasta COMP, e se lembrar, pra não criar de novo, deixe o HBMK.HBC, senão vai ser só criar de novo indicando as pastas das LIBs
Depois vai ser só gerar as LIBs novamente... ia ter que fazer isso mesmo, então apagar add-ons não é problema...

Só isso, nada de BAT, nada de configurar lib, nada..
Um dia as LIBs vão aprender a usar HBMK2 e fazer assim ou até melhor...

HBX:
Apenas uma saída do projeto. No Harbour 3.2 é obrigatório colocar a extensão HBX, no 3.4 é automático.
Com esse arquivo funcionam as pesquisas do HBMK2.
Exemplos:
hbmk2 -find back
...
addons\josequintas.hbc (não instalado):
putilbackup()
putilbackupenvia()
sqlbackup()
addons\oohg.hbc (não instalado):
insertbackspace()
setwindowbackcolor()
_setbackcolor()
_settooltipbackcolor()


d:\temp>hbmk2 test
hbmk2: Processando opções do ambiente: -comp=mingw
hbmk2: Processando arquivo de configuração: d:\harbour\bin\hbmk.hbc
Harbour 3.4.0dev (4529a2baae) (2017-09-17 16:05)
Copyright (c) 1999-2017, https://github.com/vszakats/harbour-core/
Compiling 'test.prg'...
Lines 132, Functions/Procedures 5
Generating C source output to 'C:\Users\joseq\AppData\Local\Temp\hbmk_nbnrag.dir\test.c'... Done.
C:/Users/joseq/AppData/Local/Temp/hbmk_nbnrag.dir/test.o:test.c:(.data+0x48): undefined reference to `HB_FUN_PDFCLASS'
C:/Users/joseq/AppData/Local/Temp/hbmk_nbnrag.dir/test.o:test.c:(.data+0x108): undefined reference to `HB_FUN_TRECHOJUST'
collect2.exe: error: ld returned 1 exit status
hbmk2: Erro: Executando linkeditor. 1
gcc.exe C:/Users/joseq/AppData/Local/Temp/hbmk_nbnrag.dir/test.o C:/Users/joseq/AppData/Local/Temp/hbmk_nbnrag.dir/hbmk_wsntqt.o -m32 -Wl,--nxcompat -Wl,--dynamicbase -Wl,--pic-executable,-e,_mainCRTStartup -mconsole -Wl,--start-group -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtstd -lgtpca -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainstd -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre2 -lhbzlib -Wl,--end-group -otest.exe -Ld:/harbour/lib/win/mingw -Ld:/cdrom/fontes/integra/sefazclass -Ld:/cdrom/fontes/integra/josequintas -Ld:/cvsfiles/allgui/oohg

hbmk2: Hint: Install package josequintas and input file
'addons\josequintas.hbc' for missing Harbour function(s): trechojust(),
pdfclass()


A última linha, indicando em que LIBs podem ser encontradas as funções.
Até repetir aqui:
hbmk2: Hint: Install package josequintas and input file
'addons\josequintas.hbc' for missing Harbour function(s): trechojust(),
pdfclass()


São só alguns dos recursos do HBMK2. Tem muitos que nem sei usar.... rs

Pode até fazer para o seu aplicativo isso, é interessante....

Se é só isso, porque as LIBs complicam e criam BATS?
Pra xHarbour... ou quem faz a LIB não conhece/não usa Harbour...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Organizando o ambiente: em HARBOUR

Mensagempor JoséQuintas » 25 Set 2017 17:41

Exceções:

Libraries description
=====================

FWH - FiveWin for Harbour

* Borland BCC 7.0 version: fiveh.lib, fivehc.lib

* Microsoft Visual C++ version: fivehm.lib, fivehcm.lib

* Libraries FiveH32.lib and FiveHC32.lib are to be used with Microsoft
Visual Studio Community 2015.
FiveHCM.lib and FiveHMX.lib are to be used with xHarbour commercial

* MinGW gcc: fivehg.lib, fivehgc.lib

FWHX - FiveWin for xHarbour

* Borland BCC 5.82 version: fivehx.lib, fivehc.lib

* Microsoft Visual C++ version: fivehmx.lib, fivehcm.lib

FWH64 - FiveWin 64 for Harbour/xHarbour 64 bits

* Harbour and Microsoft C 64 version: fiveh64.lib, fivehc64.lib

* Harbour and Borland 7.1 64 bits: five64.a, fivec64.a


Aí complica mesmo, não dá pra atender todas as situações.
A primeira coisa é consertar o nome das LIBs de mingw, que não usa extensão LIB.
Um HBC até ajuda mas não resolve tudo.
Algo como:

{mingw}libs=a b c
{msvc}libs=a b c
{bcc}libs=a b c
{msvc64}libs=a b c

Apesar de diferenciar os compiladores, não poderia diferenciar Visual Studio Express do Visual Studio normal.
Com essa indicação no início, só vai considerar a linha se for o compilador indicado.
Então o HBC vai selecionar a LIB correta a ser usada, conforme o compilador usado, com exceção do que já mencionei.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Organizando o ambiente: em HARBOUR

Mensagempor JoséQuintas » 27 Set 2017 11:25

Tem só mais uma coisa importante, que é diferente entre Harbour 3.2 e 3.4:

HB_INSTALL_PREFIX

No Harbour 3.4, essa variável é usada apenas na geração do Harbour.

No Harbour 3.2, essa variável também é usada na compilação, isso pode misturar versões do Harbour, caso tenha mais de uma instalada.
É que o PATH pode estar indicando uma versão, e o HB_INSTALL_PREFIX pode estar indicando outra.

Cuidado com isso.
Infelizmente, o 3.2 não acompanha as atualizações do 3.4, e algumas são muito interessantes, e podem ser importantes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Organizando o ambiente: em HARBOUR

Mensagempor microvolution » 29 Nov 2017 08:06

bom dia!
apesar de eu ser o primeiro a interagir nobre professor, mas, vejo q estou "aquem" de tanto conhecimento...
parabéns e obrigado por compartilhar seus conhecimentos conosco!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Organizando o ambiente: em HARBOUR

Mensagempor JoséQuintas » 09 Jan 2018 09:30

Voltando ao assunto....
É questão de pegar o jeito.

Poderíamos em 2018 trabalhar igual, usando HBMK2.

Basicamente é:

\harbour\bin\hbmk.hbc - para configurações do Harbour que vão valer pra todos os aplicativos e testes, para o Harbour em geral, incluindo indicação de pastas de LIBs

\nomedalib\arquivo.hbc - para configurações específicas de uma LIB

projeto.hbp - para configurações do projeto

A partir disso, um projeto de fivewin teria fivewin.hbc, de HMG extended teria hmge.hbc, sem precisar indicar particularidades da LIB no projeto, apenas o HBC

HBP, HBC, HBM... pqp.... são uma lista de arquivos e pastas, e parâmetros pra adicionar/alterar algum recurso.
É o mesmo que os BATs das LIBs costumam fazer, só que mais organizado e mais eficiente.

Compilar algo com fivewin exige algo especial? então é adicionar no fivewin.hbc do fivewin
Compilar algo com HMG Extended exige algo especial? então é adicionar no hmge.hbc da HMG extended
Compilar com Harbour vai sempre compactar o EXE? então é adicionar no hbmk.hbc do harbour\bin
O projeto vai ser fivewin? então é adicionar fivewin.hbc, que vai conter tudo que precisa pra fivewin.
À primeira vista, tudo mais simples e organizado.

Escolher entre compilador C? Isso já é comum no HBP/HBC, e dá pra verificar ${hb_comp} que contém o compilador (msvc, bcc, mingw, mingw64, msvc64, bcc64)
Opção específica de compilador, basta indicar {msvc} e o que só precisa pra msvc.

Quando for compilar, vai usar o que estiver indicado em HB_COMPILER, ou o que estiver indicado em -comp

SET HB_COMPILER=bcc

hbmk2 teste -comp=bcc

Vale a pena a gente padronizar, e todo mundo trabalhar igual, não importa se Harbour 3.2, 3.4 ou XHarbour, ou fivewin, ou HMG Extended, ou seja o que for.

Como a gente quer que o pessoal lá de cima se junte, se nós também não nos juntamos?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 17942
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Organizando o ambiente: em HARBOUR

Mensagempor microvolution » 12 Jan 2018 09:05

show show show!
só ainda é muito complexo pra mim...
mas, é muito organizada a proposta que vc apresenta JQuintas. Parabéns por contribuir conosco sempre!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 3 visitantes


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