Arquivo HBC com HbMk2

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Arquivo HBC com HbMk2

Mensagem 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.
Editado pela última vez por Toledo em 16 Mai 2014 19:06, em um total de 1 vez.
Razão: As mensagens deste tópico foi dividida de outro tópico que estava na seção Harbour e que trata de um outro assunto.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

DBF compartilhado em REDE

Mensagem 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?
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

DBF compartilhado em REDE

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Responder