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...