Não existe compilador minigui, compilador minigui extended, compilador oohg, compilador hwgui, nada disso.
Existe o HBMK2 que organiza tudo que precisa ser compilado, através do arquivo HBP.
É obrigatório que aprendam a usar o hbp e o hbmk2
CUIDADO COM AS LIBS, INFELIZMENTE ELAS ENSINAM ERRADO, E SÓ ATRAPALHAM
Por exemplo, a minigui extended tem um HBMK2.BAT
Isso significa que ao chamar hbmk2, pode estar sendo usado o hbmk2 do Harbour, ou o bat da minigui extended.
O uso do hbmk2 é simples demais, e o uso de tudo é simples demais.
1) Aonde está seu Harbour?
Vai configurar a pasta BIN do Harbour no PATH
SET PATH=%PATH%;d:\harbour\bin
2) Aonde está seu compilador C?
Vai configurar a pasta BIN do seu compilador C no PATH
Pode até colocar todos.
Uma boa localização, quando dá, é colocar em subpastas de \harbour\comp
SET PATH=%PATH%;d:\harbour\comp\mingw\bin
SET PATH=%PATH%;d:\harbour\comp\msvc2010\bin
SET PATH=%PATH%;d:\harbour\comp\bcc\bin
3) Pra criação do Harbour, ou no Harbour 3.2, é necessário indicar aonde reside a instalação do Harbour
SET HB_INSTALL_PREFIX=d:\harbour
4) Pra criação do Harbour, ou pra fixar determinado compilador C como default, é necessário indicar quem é ele
Isso não impede usar outros compiladores C, apenas fixa um como default para quando não indicar nada
SET HB_COMPILER=msvc
Podem ser necessárias configurações adicionais.
Caso o Harbour não detecte tudo automático, para msvc e provavelmente pra bcc, precisa indicar pastas de LIBs e CH da linguagem C
Precisa cuidado referente a bcc e msvc juntos. Como os dois usam extensões LIB e OBJ, se não tomar cuidado poderia misturar os dois, além de CH e H (referente a C e não a Harbour).
SET INCLUDE=
SET LIB=
Não importa biblioteca, compilador C, nem nada, isso é padrão Harbour.
Um projeto fica um arquivo HBP
Se for projeto pra biblioteca - gerar LIB - é só acrescentar -hblib
E um opcional é acrescentar -o pra escolher o nome da LIB ou EXE que vai ser gerado/gerada
Usar a cabeça também é bom, não precisa ficar perguntando tudo que aparecer.
O que aparecer de erro, tá faltando ou foi adicionado arquivo errado.
O que mais precisamos saber:
-i com I de include, minúsculo, indica um arquivo .CH ou .H que vai ser adicionado (os #include)
-I com I de include, maiúsculo, indica uma pasta aonde procurar CH ou H
-l com L de LIB, minúsculo, indica uma lib
-L, com L de LIB, maiúsculo, indica uma pasta aonde procurar LIB
-strip é interessante, deixa o EXE menor, isso não é compressão, são eliminadas rotinas de depuração pra linguagem C, que pra nós não interessa
-compr é interessante, compacta o EXE, desde que exista o UPX instalado e no PATH
-m -n -w3 -es2 são parâmetros antigos desde o Clipper, se não sabem o que é, já deveriam saber
-mt gera o EXE com a possibilidade de usar multithread, pode ser obrigatório em algum projeto que precise multithread
-inc compilação incremental, significa que num projeto só vai compilar o que tiver sido atualizado, economizando tempo
Se podemos indicar arquivos, pastas, etc. o HBP resolve tudo, não precisa inventar milhares de bat.
Se a LIB não fizer uso disso, talvez seja questão de cobrar da lib.
Se quiser gerar um projeto usando o compilador C padrão:
hbmk2 projeto.hbp
E se quiser gerar para um compilador C diferente:
hbmk2 projeto.hbp -comp=mingw
hbmk2 projeto.hbp -comp=msvc
hbmk2 projeto.hbp -comp=bcc
Isso vale pra Harbour 3.2, Harbour 3.4, minigui, hwgui, minigui extended, qt, seja o que for.
Aqueles BATS que criei pra minigui extended, nada mais são do que o uso disso.
A diferença é que lá os parâmetros estão na linha de comando, ao invés de estar num arquivo HBP.
Só pra lembrar o bat:
hbmk2 %1 %2 %3 %4 %5 %6 %7 %8 %9 ^
-lminigui ^
-lminiprint ^
-lsocket ^
-lpropgrid ^
-lpropsheet ^
-ltsbrowse ^
-lhbprinter ^
-n ^
-m ^
-mt ^
-inc ^
-strip ^
-compr ^
-L%HB_MINIGUI%\lib\win\%HB_COMPILER% ^
-I%HB_MINIGUI%\include ^
%TMP_BCC% ^
hbct.hbc ^
hbziparc.hbc ^
-workdir=c:\temp
ele faz uso dos parâmetros que mencionei acima.
Ah sim, ia esquecendo:
A fim de já deixar toda configuração envolvida já resolvida, existem os arquivos HBC
Eles são um "conjunto" de libs, pastas de lib, includes, pastas de includes pra determinada biblioteca
Por exemplo, hbziparc.hbc já indica tudo que precisaria adicionar pra funcionar essa lib
Se existir um minigui.hbc, seria só indicar esse arquivo, ao invés da lista de ch, lib, pastas, etc.
Usar diferente de HBP, só pra quem usa XHARBOUR, onde não existe hbmk2.
Como as LIBs são pra Harbour/xHarbour, elas acabam fazendo BATs e não tiram proveito dos recursos do Harbour
Se quem faz a LIB não usar Harbour, apenas XHarbour, eles também não tem obrigação de saber, cabe a alguém ajudá-los a fazer.
Assim como eu não mexo com XHarbour, e não tenho a menor obrigação de saber como funciona nele.
Uma coisa é certa:
HBMK2 é muito fácil de usar
Tava na hora do XHarbour ter um utilitário igual, e acabar com esse porrilhão de BATs que costumam fazer.
Pra casos básicos, de EXE e LIB, basta usar assim:
hbmk2 *.prg *.c *.rc -m -oaplicativo
hbmk2 *.prg *.c *.rc -m -hblib -onomelib
Pra casos mais complexos, é criar um HBP especÃfico para o projeto.
Esse é o básico.
Para uso avançado tem como escolher conforme compilador, exigir DLL adicional, etc.
Também gerar importlib, e outras coisas mais.
Então, HBMK2 é um utilitário definitivo de compilação em Harbour, não precisa inventar nada diferente, porque é só complicar.
Meus BATs pra hmg extended não fizeram nada demais, apenas fizeram uso do hbmk2 e dos parâmetros que ele tem.
BAT tem que ser pra simplificar, e não pra complicar.
Aqui por exemplo, tenho o C.BAT
É só pra não digitar toda hora o mesmo comando grande, basta C<ENTER> e tudo está compilado.
Outro recurso interessante, não sei se dá pra chamar de avançado:
-----arquivo projeto.hbp
\minigui\minigui.hbp
\hwgui\hwgui.hbp
test.prg
-lminigui
-lhwgui
É só exemplo.
Seria gerado o projeto minigui, caso necessário
Seria gerado o projeto hwgui, caso necessário
E no final seria gerado o test.exe que faz parte do projeto atual
Isso é um projeto com sub-projetos
se gostaram até aqui, saibam que tem muito mais.
Isso não é nem metade dos recursos do hbmk2.
Para mais informações, digite: hbmk2 -longhelp
É um help longo mesmo.... rs