Página 1 de 1

Arquivo HBC com HbMk2

Enviado: 16 Mai 2014 15:26
por Eolo
hbmk2 demo.prg hbct.hbc -b -lhbwin
Toledo, Alex...

O que é hbmk2 e qual a diferença dele pro 1 e pro 3?

-LHBWIN? Is this chinese or what? "hbct.hbc -b"? Sorcery?

Sério, eu me perdi.

DBF compartilhado em REDE

Enviado: 16 Mai 2014 15:57
por alxsts
Olá!

No Harbour, HbMk2 é como se fosse o RMake do Clipper ou o HBMake do xHarbour (não sei se existe ou existiu HbMk1 ou 3...)

Em -lHbWin, -l (menos l de library) é uma chave para o HbMk2 e indica que ele deve linkar com a lib que segue o -l (no caso HbWin).

Em hbct.hbc (isto ainda estou pesquisando) creio que informe ao linker que é para linkar uma lib da contrib do Harbour junto ao que está sendo compilado (no caso HbCt, que é a CT.Lib do Harbour)

O -b é o /b do Clipper, compilar com informações para o debugger.

Esse HbMk2 é bastante poderoso, multi-plataforma e multicompilador. Como já informei em outro tópico, no prompt do CMD, teclando-se HbMk2 . (HbMk2 ponto), ele abre uma tela em modo prompt de comando, ao estilo do dBase III.

Veja mais em How to use hbmk2?

DBF compartilhado em REDE

Enviado: 16 Mai 2014 18:58
por Toledo
alxsts escreveu:Em hbct.hbc (isto ainda estou pesquisando) creio que informe ao linker que é para linkar uma lib da contrib do Harbour
No caso das libs do Contribs, os arquivos HBC vão indicar quais as libs que serão usadas na compilação.
Por exemplo o arquivo hbziparc.hbc (\contrib\hbziparc)
description=HBZIPARC compatibility (zip compression)

libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF}
libs=hbmzip.hbc
As expressões ${_HB_DYNPREF}, ${hb_name} e ${_HB_DYNSUFF} são macros variáveis, pois como o HbMk2 pode ser usado com vários compiladores e em várias plataformas, então estas macros vão compatibilizar o nome das libs para qualquer dos compiladores e plataforma.

${_HB_DYNPREF} = é o prefixo da biblioteca
${hb_name} = é o nome do arquivo (sem extensão)
${_HB_DYNSUFF} = é o sufixo da biblioteca

Observe que o hbziparc.hbc está chamando o hbmzip.hbc:
description=minizip wrapper (zip compression)

incpaths=.

headers=${hb_name}.ch

libs=${_HB_DYNPREF}${hb_name}${_HB_DYNSUFF}
libs=3rd/minizip/minizip.hbc
Então fica bem mais fácil informar o arquivo hbziparc.hbc na compilação, do que ter que indicar várias libs: -lhbziparc -lhbmzip -lminizip

Você pode também criar o seu próprio HBC, definindo as opções padrão que serão comuns para compilar os seus programas.

Você pode também criar o hbmk.hbc, que será usado na compilação quando estiver (for encontrado) na mesma pasta onde estão os fontes do seu programa, independente se você informar o arquivo hbmk.hbc na linha de comando do HbMk2.

Nos arquivos HBC você pode colocar as diretivas que serão usadas na compilação:
${hb_root} diretório de hbmk2
${hb_dir} diretório de nome de arquivo é usado em
${hb_dirname} nome do diretório raiz dos arquivos em uso
${hb_name} é usado para nomear o arquivo (sem diretório e extensão)
${hb_self} nome completodo arquivo que está em uso
${hb_curdir} diretório de trabalho atual
${hb_tempdir} Diretório do Sistema Operacional para arquivos temporários
${hb_targetname} nome do projeto (sem a diretório e extensão). Retorna .adhoc. se não existir arquivo de projeto.
${hb_targettype} tipo do projeto (hbexe, hblib, hbdyn, hbdynvm, hbimplib, hbppo, hbhrb, hbcontainer)
${hb_plat} plataforma selecionada
${hb_comp} compilador C selecionado
${hb_comp_ver} versão do compilador C
${hb_build} nome da construção "build"
${hb_cpu} CPU selecionada
${hb_work} nome padrão do diretório base de trabalho
${hb_workdynsub} subdiretório padrão de trabalho para bibliotecas dinâmicas de destino
${hb_dynprefix} prefixo de biblioteca dinâmica
${hb_dynsuffix} sufixo de biblioteca dinâmica
${hb_dynext} extensão de biblioteca dinâmica
${hb_ver} Versão do Harbour no formato de tres bytes em hexadecimal. Exemplo: 030200
${hb_verstr} Versão do Harbour no formato legível por humanos <major>.<minor>.<release><status>. Ex.: 3.2.0dev
${hb_major} número da versão principal Harbour
${hb_minor} número da versão secundária Harbour
${hb_release} número da versão Harbour liberada
${hb_status} status da versão Harbour
${hb_revision} revisão Harbour
${hb_host_plat} plataforma de hospedagem Harbour
${hb_host_plat_unix} retorna '1' se o Harbour estiver hospedado numa plataforma compatível com *nix
${hb_bin} diretório de binarios Harbour
${hb_lib} diretório de bibliotécas estáticas Harbour
${hb_lib3rd} diretório Harbour de bibliotécas estáticas de terceiros
${hb_dyn} diretório de bibliotécas dinâmicas Harbour
${hb_inc} diretório Harbour para header
${hb_addons} diretório base para complementos "add-ons" Harbour.
${hb_first} nome do arquivo do fonte que detém a função de entrada (sem diretório e extensão)
${hb_outputdir} diretório de saída
${hb_outputname} nome de saída (sem a extensão)
${hb_level} nível de recursão do sub-projeto
${<depname>} retorna o diretório header da dependência <depname>, ou ´1´se ela não foi detectada.
${<envvar>} returna os valores das variáveis de ambiente <envvar>
Abraços,