Compilar com Harbour

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

Moderador: Moderadores

Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Compilar com Harbour

Mensagem por Hasse »

Boa tarde a todos.

Terminei de migrar um sistema que rodava em xHarbour para o Harbour. E foi bem rápido e fácil. O executável final ficou uns 10% menor do que aquele do xHarbour.

O compilador informa a falta da Função MilliSec():
Error: Unresolved external '_HB_FUN_MILLISEC' referenced from C:\CLIPPERH\.HBMK\WIN\BCC\M_MOD.OBJ
Achei o prg em:
trunk\harbour\contrib\hbct\cttime.prg(99): function MILLISEC( nDelay )
1-Qual a forma mais prática para referenciar esta função no meu sistema ?

2-Usei a forma HBMK2 Fio.hbp -lhbct, e o compilador gerou sem erro. Como posso incluir a opção -lhbct e -inc em meu script, e assim evitar a necessária digitação destas opções (ou qualquer outra opção que seja necessária) a cada vez ?

3-Se for possível incluir esta opção (e outras) no script, e quando da necessidade de um -rebuild este poderia ser feito no comando DOS ? As 2 opções (uma do ambiente DOS e outra do script) seriam avaliadas corretamente pelo compilador ?

4-Esta opção -rebuild criaria algum conflito com a opção -inc do script ? No meu entender as 2 são excludentes. Ou o compilador tem alguma forma especial de avaliar elas (do tipo: se tem uma não avaliar a outra...).

5-Qual a forma de se refenciar *.LIB's, *.OBJ's, *.C's dentro do script ?
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Compilar com Harbour

Mensagem por Itamar M. Lins Jr. »

Ola!
É simples mesmo. Basta colocar no arquivo .hbm por exemplo

Código: Selecionar todos

-inc
-lrmchartmsvc.lib 
-lrddleto.lib 
-lgtwvg.lib 
-lhwgui.lib
-lhwg_qhtm.lib
-lprocmisc.lib
-lhbxml.lib
-lhbct.lib
-lhbnf.lib
-lhbblat.lib
-lblatmsvc.lib
-lhbwin.lib
-lxhb.lib
-gui
-mt
-run
#um comentário
moduloprincipal.prg
demaismodulos.prg
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Compilar com Harbour

Mensagem por Itamar M. Lins Jr. »

Ola,
O rebuild pode chamar assim:

Código: Selecionar todos

hbmk2 modulo.hbm -rebuild
supondo que está dentro do modulo.hbm o comando -inc

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Re: Compilar com Harbour

Mensagem por Hasse »

OPA !!!!

Agora o amigo está me orientando o uso do script *.hbm ?

Qual a diferença deste para o *.hbp que eu estava usando ?

Demais detalhes estão entendidos da seguinte forma: não haverá conflito entre a opçãp -inc que estará dentro do *.hbm e o -rebuild que estará na linha de comando do DOS. Assim o -rebuild terá preferência sobre o -inc.

O módulo principal "Main()", sempre deverá ser o primeiro a ser referenciado.

Obrigado Itamar.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: Compilar com Harbour

Mensagem por fladimir »

Pessoal o q eu estou errando, pois passei o feriado do dia 07 de setembro praticamente inteiro nessa bexiga e não consigo nem compilar o Harbour nem compilar meus programa q no xHarbour com HBMake faço sem problemas...

Bom vamos pular a parte de compilar o Harbour q desisti por enquanto e peguei um q o colega Rodrigo disponibilizou com um video ensinando como compilar para iniciantes em modo console...

https://pctoledo.org/forum/viewto ... f=4&t=9385

Meu problema não é UM prg e sim o grupo q compõe o sistema e as libs e os arquivos de cabeçalho....

Ou seja,

No xHarbour eu abria HBMAKE Sistema.BC /E onde eu ia escolhendo as opçoes e depois escolhia os PRG´s q faziam parte e as libs tb...

Agora eu não sei fazer isso para usar através do HBMK2.... andei pesquisando e pesquisando e percebi q tenho q criar um arquivo com a extensão HBP q seria o script, mas em outro lucar vi um com a extensão HBM e qual é o certo e como é a correta SINTAXE do comando para usar com o arquivo.

E qto aos arquivos .CH basta estar na variável de Ambiente ?

Outra coisa muito importante eu utilizo as libs CT, HBCOMM, TIP entre outras e no HARBOUR compilado cedido pelo colega Rodrigo (http://www.4shared.com/file/107117779/5 ... setup.html).

não tem tais libs o q terei q fazer ?

------------------------------------------
Como estou fazendo:

C:\sistema>hbmk2 -oteste *.prg @teste.hbp
hbmk: Processing configuration: C:\harbour\bin\hbmk.cfg

hbmk: Processing: TESTE.HBP

Harbour 1.1.0dev (Rev. 11090)
Copyright (c) 1999-2009, http://www.harbour-project.org/
Cannot open input file: testelib.prg
hbmk: Error: Running Harbour compiler. 1

-n2 agenda.prg aliquota.prg boleto.prg cartao.prg cheque.prg
empresas.prg filial.prg help.prg pdv.prg shopping.prg unidades.prg
vendedor.prg {win}lib=hbct hbtip testelib -iC:\harbour\include


------------------------------------------------------------
Conteúdo do arquivo teste.hbp

{win}lib=hbct hbtip testelib



Grato a todos...
:)Pos
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Re: Compilar com Harbour

Mensagem por Hasse »

Oi Fladimir.

Bem as Lib's você referencia conforme o texto acima, do Itamar, dentro de um script *.hbm, que eu também ainda não sei bem como funciona.

Eu consegui compilar o meu sistema usando o script *.hbp, onde listei todos os prg's. As lib's referenciei na linha de comando do DOS. Os *.ch eu referenciei dentros dos prg's.

A linha de comando do DOS ficou assim:

HBMK2 MeuSis.hbp -<NomeDaLib>, e compilou sem qualquer modificação nos prg's.

Dá uma olhada nos textos acima. A resposta em relação aos *.hbm deve vir amanhã, de algum colega que tenha conhecimento.

No arquivo INSTALL que acompanha o Harbour tem um bocado de informações.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: Compilar com Harbour

Mensagem por fladimir »

Hasse consegui ... em partes... deu um erro de não achar algumas funçoes, mas pelo q eu olhei são da CT e no Script Teste.HBP eu referenciei as seguintes libs após a lista dos PRG´s :


-lcaslib
-lhbmzip
-lhbziparc
-lhbct
-lhbtip
-lhbwin
-lxhb
-lhbhpdf
-lhbblat

e mesmo assim permanece o erro:

c:\Sistema\hbmk2 @teste.hbp

Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: Unresolved external '_HB_FUN_FILEVALID' referenced from C:\SISTEMA\VENDAS.OBJ
Error: Unresolved external '_HB_FUN_DISKREADY' referenced from C:\HARBOUR\LIB\SISTEMA.LIB|d_erro
Error: Unresolved external '_HB_FUN_CURDIRX' referenced from C:\SISTEMA\PROCESSO.OBJ
Error: Unresolved external '_HB_FUN_INIT_PORT' referenced from C:\SISTEMA\ENTRADA.OBJ
Error: Unresolved external '_HB_FUN_DISKTOTAL' referenced from C:\HARBOUR\LIB\SISTEMA.LIB|erromsg
Error: Unresolved external '_HB_FUN_DISKFREE' referenced from C:\HARBOUR\LIB\SISTEMA.LIB|erromsg
Error: Unresolved external '_HB_FUN_HB_BACKGROUNDDEL' referenced from C:\SISTEMA\MENU.OBJ
hbmk: Error: Running linker. 2

ilink32.exe @C:\DOCUME~1\Familia\CONFIG~1\Temp\w2ejdv.lnk

Obs... antes estava dando mais erros de referencias na biblioteca principal do sistema, mas com funçoes internas, e o q eu fiz foi deixar tudo minúsculo e recompilar tudo, fiz isso pq percebi q justamente as q não pegava na compilação eram as q estava Maiúsculas, sera impressão minha ou a questão CaseSensitive tem algo a ver ? Agora com relação as referências acima não são próprias e sim de libs conhecidas como a CT e outras e eu verifiquei na pasta c:\Harbour\Lib lá tem a hbct.lib.

************************************************
Após esta postagem estou editando a mensagem pois resolvi testar resolvendo as chamadas as funçoes acima desativando as mesmas (não q não são necessárias), fiz isso para ver se não seria necessário mais algo além da resolução deste problema.

Resumindo retirando as chamadas a essas funções o sistema compilou em Harbour com BCC (Ufa!!!! são 23:52, achei q ia terminar o dia 07 e não ia ter minha independência rsrs), consegui rodar o sistema e nos testes preliminares a performance esta melhor.

Mas preciso resolver essa questão pois a lib HBCT esta referenciada dentro do script, mas parcece q não pega as funçoes... algum colega já passou por isso ou sabe pq? Além de outras Funçoes q não são da CT como a BackGroundDel e a Init_port (HbComm q não achei e não sei como coloco no HARBOUR)

Outra coisa o UPX tem como eu colocar no script uma chamada pra ele ou tenho q fazer na unha após gerar o EXE.




Obrigado!!

:)Pos
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compilar com Harbour

Mensagem por sygecom »

Bom, não li tudo que está se passando por esse topico, mas vou dar alguns pitaco e espero não está complicando ainda mais.

Para compilar com Harbour eu faço um pouco diferente, primeiro que meu path para compilar com harbour é o seguinte:
Com BCC55:

Código: Selecionar todos

SET PATH=%PATH%;d:\devel\BCC55\BIN;d:\devel\BCC55\LIB;d:\devel\BCC55\LIB\PSDK;d:\devel\BCC55\INCLUDE;d:\devel\hb-bcc\bin;d:\devel\hb-bcc\lib;d:\devel\hb-bcc\include;d:\devel\BISON\BIN
SET INCLUDE=%INCLUDE%;d:\devel\Bcc55\include;d:\devel\hb-bcc\include
SET LIB=%LIB%;d:\devel\Bcc55\lib;d:\devel\BCC55\LIB\PSDK;d:\devel\hb-bcc\lib
SET HRB_DIR=d:\devel\hb-bcc
SET HB_INC_PGSQL=d:\pgsql\include
%SystemRoot%\system32\cmd.exe
Com MSVC:

Código: Selecionar todos

cd\devel
cd msvc\VC
call vcvarsall.bat"
cd\sistema
SET PATH=d:\devel\hb-msvc\bin;d:\devel\hb-msvc\lib;d:\devel\hb-msvc\include;%PATH%
SET INCLUDE=%INCLUDE%;d:\devel\hb-msvc\include
SET LIB=%LIB%;d:\devel\hb-msvc\lib
SET HRB_DIR=d:\devel\hb-msvc
SET HB_INC_PGSQL=d:\pgsql\include
%SystemRoot%\system32\cmd.exe
Meu script de compilação é um arquivo .HBC esse arquivo basta ter ele dentro da pasta onde vou compilar meu projeto que automaticamente o hbmk2 reconhece tudo.

Script.hbc

Código: Selecionar todos

{bcc|allmsvc}libs=hwgui procmisc hbmzip hbziparc hbct hbtip hbwin xhb hbhpdf libhpdf libpng hbblat blat hbgd bgd
{bcc}libs=${hrb_dir}\contrib\minhalib_bcc
{allmsvc}libs=${hrb_dir}\contrib\minhalib_msvc
{allmingw}libs=libhwgui libprocmisc libhbmzip libhbziparc libhbct libhbtip libhbwin libxhb libhbhpdf liblibhpdf liblibpng libhbblat libblat libhbgd libbgd
{win}gt=gtgui
libpaths=${hrb_dir}\contrib\hwgui\lib
incpaths=${hrb_dir}\contrib\hwgui\include
#sources=source_hb\xAds.prg
#prgflags=-D__ADVANTAGE__
run=yes
Vou explicar o script acima:
1ª Linha é a lista de LIB'S que podem ser compilados tanto com BCC ou MSVC, ou seja tem nomes em comuns.
2ª Linha são lib's que só compilaram se for compilar com BCC, no caso pode ser BCC55,BCC58 ou BCC60 (Foi os que já testei e compilei)
3ª Linha São lib's que só compilaram se for compilar com MSVC
4ª Linha São lib's que só compilaram se for compilar com MINGW
5ª Linha quer dizer que é um aplicativo GUI ou seja Grafico que no meu exemplo acima serve para compilar aplicativos Hwgui, mas para aplicativos sem lib's graficas pode omitir essa linha ou usar gt=gtwin
6ª Linha quer dizer que o hbmk2 alem de procurar pelas LIB's nos PATH que iniciei ele também vai buscar nesse caminho que indiquei nessa linha.
7ª Linha é a mesma coisa que a 6ª linha porem vai buscar mais path para INCLUDES.
8ª Linha quer dizer o caminho de um arquivo fonte que tem que compilar com meu aplicativo alem dos que já indiquei na linha de comando do hbmk2, atenção que ele está com um # na frente isso quer dizer que não vai participar do script serve para comentar as linhas dentro do script.
9ª Linha são as FLAGS que devem ser reconhecidas pelo meu aplicativo na compilação, no exemplo acima ela esta comentada para não participar do meu script
10ª Linha quer dizer que se compilar com sucesso ele já abre meu aplicativo automaticamente.

E na linha de comando do hbmk2 eu uso assim(Tenho isso em um COMP.BAT):
hbmk2 -inc -st -trace -oNOMESISI *.prg NOMERES.RC

Onde:
-st quer dizer que o aplicativo é um single-thread ou seja não utiliza recursos Multi-theread, e diga-se de passagem o MT no Harbour está muito bom.
-trace quer dizer que deve aparecer os comandos executados pelo hbmk2
-oNOMESIS quer dizer o nome do EXECUTAVEL que está sendo gerado
*.prg quer dizer que todos os arquivos com a extenção .PRG que esta na pasta onde estou executando o hbmk2 será compilado em meu sistema
NOMERES.RC esse é nome do arquivo de resource

Como meu .PRG principal esta com o FUNCTION MAIN() isso faz com que o Harbour identifique automaticamente qual o .PRG principal.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compilar com Harbour

Mensagem por sygecom »

Olá Fladimir,
No harbour tem algo bem melhor que a Hbcomm para comunicação serial que esta na LIB HBWIN, ela funciona até pelo remoto do TS e é muito rapida. Veja o exemplo da pasta \harbour\contrib\hbwin\tests\testprt2.prg

O background, acho que não tem no harbour mesmo, porem tem um MT 100% que não da GPF toda hora que nem o xHarbour, vale a pena testar.

E sobre o UPX basta você colocar na linha de comando o seguinte:
-compr[=lev]

Onde lev é o nivel de compressão: min, max, def
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: Compilar com Harbour

Mensagem por fladimir »

Vlw Leonardo obrigado, agora diz o seguinte... vc aprende td isso vasculhando dentro das pastas do projeto, exemplos, etc ? pq cara não q eu ache ruim, mas tipo se o caminho das pedras for esse é melhor a gente fuçar e aprender tb do q ficar esperando acontecer a situação e pedir socorro no fórum, tipo não desmercendo nada, pelo contrário uma das funções do fórum é o compartilhamento de informações...

Agradeço e Sucesso!!!

:)Pos
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compilar com Harbour

Mensagem por sygecom »

Buenas colegas,
Na verdade apenas acompanho a risco o ChangeLog fo Harbour, então cada vez que sai alguma coisa que acho importante para meu conhecioneto e aprendizado ou eu anoto ou ficou mais atento aquilo, como é o caso agora do hbnetio estou atento a ele e suas evoluções e assim que sobrar um tempinho vou iniciar os testes com ele.
Agora dar uma vasculhada nos fontes principalmente nas Contrib não faz mal algum, alias é de veras importante para conhecer melhor o potencial de algumas ferramentas. E no caso do HBMK2 tem uma ajuda no proprio basta digitar: hbmke -help
Harbour Make (hbmk2) 2.0.0beta3 (Rev. 12423)
Copyright (c) 1999-2009, Viktor Szakats
http://www.harbour-project.org/
Translation (pt-BR): Vailton Renato, (vailtom@gmail.com)

Sintaxe:

hbmk2 [opções] [<script>] <src[.prg|.c|.obj|.o|.rc|.res|.po|.pot|.hbl|@.clp]>

Opções
-o<outname> nome de arquivo de saida
-l<libname> linkar com a biblioteca <libname>. <libname> deve omitir
path, extensão e o prefixo 'lib' (… menos que faça parte do nome-de-arquivo).
-L<libpath> path adicional para pesquisar por bibliotecas
-i<p>|-incpath=<p> paths adicionais para pesquisa de arquivos headers
-static|-shared linkar com biliotecas est ticas/compartilhadas
-mt|-st linkar com suporte multi ou single-thread na HVM
-gt<name> link with GT<name> GT driver, can be repeated to link with
more GTs. First one will be the default at runtime
-hblib criar biblioteca est tica
-hbdyn criar biblioteca dinamica

-gui|-std criar um execut vel GUI/console
-main=<mainfunc> sobrescreva o nome da função/procedimento inicial
-fullstatic linkar com todas as bibliotecas est ticas
-[full|fix]shared create shared Harbour binaries without/with absolute dir
reference to Harbour library (default: 'fullshared' when
Harbour is installed on system location, 'fixshared'
otherwise) (fix/full option in *nix only)
-nulrdd[-] linkar com o nulrdd
-[no]debug adicionar/excluir informações de debug do compilador C.
Para compilar com Harbour utilize a opção -b como de
costume.
-[no]optim alterna as optimizações do compilador C (ativado por
padrão)
-[no]cpp[=def] forçar compilação em modo C/C++ ou reseta para o modo
padrão
-[no]map criar (ou não) o arquivo map
-[no]implib create (or not) an import library (in -hbdyn mode)
-[no]strip strip (ou não) arquivos bin rios
-[no]trace exibir os comandos executados
-[no]beep ativa (ou desativa) um beep simples em caso de sucesso ou
um beep duplo em caso de erro
-[no]ignore ignore errors when running compiler tools (default: off)
-nohblib[-] não usar bibliotecas est ticas do n£cleo do Harbour quando
linkar
-nolibgrouping[-] disable library grouping on gcc based compilers
-nomiscsyslib[-] don't add extra list of system libraries to default
library list
-traceonly exibir os comandos … serem executados, mas não execute-os
-[no]compr[=lev] comprime o execut vel/biblioteca dinanica (necessita de
UPX)
<lev> pode ser: min, max, def
-[no]run executar/não executar o aplicativo gerado.
-vcshead=<file> gera um arquivo .ch com informações do repositorio local.
SVN, CVS, Git, Mercurial e Bazaar estão entre as
ferramentas atualmente suportadas. O arquivo gerado
conter  a diretriva _HBMK_VCS_TYPE_ com o nome do VCS
detectado e _HBMK_VCS_ID_ com o unique ID do reposit¢rio
local
-tshead=<file> gerar cabe‡alho .ch com informações de data/hora. Cabeçalho
gerado conter  as macros _HBMK_BUILD_DATE_,
_HBMK_BUILD_TIME_, _HBMK_BUILD_TIMESTAMP_ com a data/hora
de criação do arquivo.
-icon=<file> set <file> as application icon. <file> should be a
supported format on the target platform (experimental)
-instpath=<path> copiar o alvo para <path>. Se <path> for um diretorio,
deve terminar com separador de path. Podem ser
especificadas multiplas vezes.
-nohbc não processar arquivos .hbc no diretorio atual
-stop interromper sem executar nada
-echo=<text> ecoa texto na tela

-bldf[-] herdar flags do Harbour: todos/nenhum (padrão)
-bldf=[p][c][l] herdar todos os flags .prg/.c/linker (ou nenhum) provindos
do Harbour
-inctrypath=<p> Pasta adicional para localização automatica dos cabeçalhos
.c
-prgflag=<f> especifica flags para o Harbour
-cflag=<f> especifica flags para o compilador C
-resflag=<f> especifica flags para o compilador de recursos (apenas
windows)
-ldflag=<f> especifica flags para o lineditor (executavel)
-aflag=<f> passa flag para o linkeditor (lib est tica)
-dflag=<f> informar flags para o linkeditor (biblioteca dinanica)
-runflag=<f> argumentos … serem passados ao execut vel gerado quando
-run for utilizado
-jobs=<n> dispara <n> threads de compilação (apenas plataformas
multiprocessadas)
-inc habilita o modo de compilação incremental
-[no]head[=<m>] controla a an lise de cabeçalhos (no modo de compilação
incremental)
<m> pode ser: full, partial (padrão), off
-rebuild Recompilar tudo (em modo de compilação incremental)
-clean compilação limpa (em modo de compilação incremental)
-workdir=<dir> diretorio de trabalho para o modo de compilação
incremental
(default: .hbmk/plat/comp)

-hbl[=<output>] Nome-de-arquivo .hbl resultante. A macro %{hb_lng} ‚
aceita no nome-de-arquivo.
-lng=<languages> lista de idiomas … serem substituidos nas macros %{hb_lng}
nos arquivos .pot/.po e nos nomes de arquivos de saida
.hbl/.po. Lista separada por virgula:
-lng=en-EN,hu-HU,de
-po=<output> criar/atualizar arquivo .po … partir dos fontes. Se um
arquivo .po com o mesmo nome existir, o arquivo ser 
mesclado.
-[no]minipo Adicionar (ou não) a referência do numero da versão do
Harbour e o arquivo de origem ao .po (ativo por padrão)
-rebuildpo recria o arquivo .po removendo assim todas as entradas
obsoletas no mesmo

-target=<script> Especifique um novo alvo para compilação. <script> pode
ser modulo .prg (com ou sem extensão) ou .hbm (somente
para linha de comando)
-target marca o in¡cio de opções pertencentes … um novo alvo
(disponivel apenas em linha de comando)
-alltarget denota o in¡cio de opções comuns pertencentes … todos os
alvos (disponivel apenas em linha de comando)

-hbrun executar alvo
-hbraw interromper apos executar o compilador Harbour
-hbcmp|-clipper interromper apos criar os arquivos objetos
criar um link ou copiar o hbmk2 para hbcmp/clipper
resultar  no mesmo efeito
-hbcc interromper apos criar os arquivos objetos e processa-los
com o compilador C
criar um link ou copiar o hbmk2 para hbcc resultar  no
mesmo efeito
-hblnk parametros especificos do linkeditor.
-hb10 habilita modo de compatibilidade 'Harbour 1.0.x'
(experimental)
-xhb habilitar modo 'xHarbour' (experimental)
-hbc ativa modo C puro (experimental)
-exospace emula o comportamento de um linkeditor compativel com
clipper
criar um link ou copiar o hbmk2 para
rtlink/blinker/exospace resultar  no mesmo efeito

--hbdirbin exibe o diretorio dos binarios do Harbour
--hbdirdyn exibe o diretorio das bibliotecas dinamicas do Harbour
--hbdirlib exibe o diretorio das bibliotecas estaticas do Harbour
--hbdirinc exibe o diretorio dos headers do Harbour

-plat[form]=<plat> assume uma arquitetura especifica. Semelhante … variavel
HB_PLATFORM
-comp[iler]=<comp> use o compilador C especifico. Semelhante … variavel
HB_COMPILER
Valor especial:
- bld: use a configuração original (padrão em *nix)
-build=<name> use a specific build name
-lang=<lang> Sobrepor o idioma padrão. Semelhante … variavel HB_LANG.
--version exibir somente o cabeçalho com a versão do hbmk
-pause forçar pause por uma tela em caso de erro (somente com
driver GT alternativo)
-info ativar mensagens informativas
-quiet suprimir todas as mensagens

Notas:
- <script> pode ser <@script> (no formato .hbm), <script.hbm>, <script.hbp>
(denotando um novo alvo) ou <script.hbc>.
- Multiplos parametros -l, -L e <script> são aceitos.
- Opções usadas com o compilador Harbour tambem são aceitas.
- O arquivo de configuração hbmk.cfg no diretorio do hbmk2 sempre ser
processado caso exista. Em plataformas *nix este arquivo ‚ sempre procurado
nas pastas ~/.harbour, /etc/harbour, <base>/etc/harbour, <base>/etc
(exatamente nesta ordem) antes da pasta que contem o hbmk. O formato deste
arquivo ‚ o mesmo de um .hbc.
- O script hbmk.hbm no diretorio atual ser  sempre processado se existir.
- arquivos .hbc na pasta corrente serão automaticamente processados.
- As opções em um arquivo .hbc devem estar em linhas separadas e são:
libs=[<libname>], hbcs=[<.hbc file>], gt=[gtname],
syslibs=[<libname>], prgflags=[flags do Harbour], cflags=[flags do
compilador C], resflags=[flags do compilador de recursos], ldflags=[flags
do linkeditor], libpaths=[paths], sources=[m¢dulos fontes],
incpaths=[paths], inctrypaths=[paths], instpaths=[paths],
gui|mt|shared|nulrdd|debug|opt|map|implib|strip|run|inc=[yes|no],
cpp=[yes|no|def], compr=[yes|no|def|min|max], head=[off|partial|full],
skip=[yes|no], echo=<text>
Linhas iniciadas com '#' são interpretadas como comentarios e serão
ignoradas
- Os filtros para plataformas são aceitos para cada uma das linhas de um
arquivo .hbc e possuem diversas opções.
Formato de um filtro: {[!][<arquitetura>|<compilador>|<palavra-chave>]}. Os
filtros podem ser combinados usando os operadores '&', '|' e agrupados por
parˆnteses. Ex.: {win}, {gcc}, {linux|darwin}, {win&!pocc},
{(win|linux)&!watcom}, {unix&mt&gui}, -cflag={win}-DMYDEF, -stop{dos},
-stop{!allwin}, {allpocc|allgcc|allmingw|unix}, {allmsvc},
{x86|x86_64|ia64|arm}, {debug|nodebug|gui|std|mt|st|xhb}
- Algumas op‡äes do .hbc (libs=, hbcs=, prgflags=, cflags=, ldflags=,
libpaths=, inctrypaths=, instpaths=, echo=) e seus correspondentes
parametros de linha-de-comando aceitam as seguintes macros: ${hb_root},
${hb_dir}, ${hb_name}, ${hb_plat}, ${hb_comp}, ${hb_build}, ${hb_cpu},
${hb_bin}, ${hb_lib}, ${hb_dyn}, ${hb_inc}, ${<envvar>}. libpaths= tambem
aceitam %{hb_name} que se traduz como o nome do arquivo .hbc sob pesquisa.
- Opções aceitando macros tambem suportam linhas de comando. Neste caso basta
rodeiar o comando dentro de ``, e, se o comando contiver espaço, tambem
adicione aspas duplas. i.e. "-cflag=`wx-config --cflags`", ou
ldflags={unix&gcc}"`wx-config --libs`".
- As opções default e suas caracteristicas variam de arquitetura/compilador.

Valores suportados para <comp> conforme a <plat> disponivel:
- linux : gcc, watcom, icc, sunpro
- darwin : gcc, icc
- win : mingw, msvc, bcc, watcom, icc, pocc, cygwin, xcc,
- mingw64, msvc64, msvcia64, iccia64, pocc64
- wce : mingwarm, mingw, msvcarm, poccarm
- os2 : gcc, watcom
- dos : djgpp, watcom
- bsd : gcc
- hpux : gcc
- sunos : gcc, sunpro
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: Compilar com Harbour

Mensagem por fladimir »

Ok Leonardo, vlw mesmo... agora eu pesquisei na pasta Habour e SUBPASTAS pois no xHarbour utilizava a função Filevalid() e na Ajuda do xHarbour ele é compatível, mas não encontrei equivalente no Harbour, tem algum lugar q tenha os comandos e funções do Harbour nem temos do xHarbour q tem o xHarbour Language Reference Guide ?

Agradeço... Sucesso!!!

:)Pos
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compilar com Harbour

Mensagem por sygecom »

Não tem um Help de Referencia que nem o xHarbour, mas no caso do Filevalid() tente ver se não tem algo no: hbcompat.ch, se não tiver post no harbour-devel que eles rapidinho dão uma resposta, isso se não colocarem na hora no harbour do svn.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Hasse
Usuário Nível 4
Usuário Nível 4
Mensagens: 820
Registrado em: 19 Out 2004 10:30
Localização: Jaraguá do Sul - SC

Re: Compilar com Harbour

Mensagem por Hasse »

Boa noite amigos.

Consegui compilar o Harbour para MSVC.

Ao compilar um prg com esta versão acima do Harbour, devo setar sempre a variável HB_COMPILER-msvc, correto ?

Bem, setei esta variável acima e ao compilar tenho o seguinre erro:

Código: Selecionar todos

C:\Harbour\trunk\harbour\tests>hbmk2 box.prg
hbmk2: Processando arquivo de configuração:
       C:\Harbour\trunk\Harbour\bin\hbmk.cfg
Harbour 2.0.0beta2 (Rev. 12407)
Copyright (c) 1999-2009, http://www.harbour-project.org/
Compiling 'box.prg'...
Lines 98, Functions/Procedures 1
Generating C source output to 'box.c'... Done.
hbmk2: Erro: Executando compilador C. -1
cl.exe -nologo -c -Gs -Ot2b1  -IC:\Harbour\trunk\Harbour\include box.c
1-Este arquivo box.c não está na pasta C:\Harbour\trunk\Harbour\include box.c

2-Não está faltando uma barra reversa entre include e box.c ?

O arquivo hbmk.cfg está assim:

Código: Selecionar todos

# hbmk2 configuration
# Generated by Harbour build process
libpaths=../contrib/%{hb_name}
libpaths=../contrib/rddsql/%{hb_name}
libpaths=../addons/%{hb_name}
libpaths=../examples/%{hb_name}
libpaths=../lib/win/msvc
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Compilar com Harbour

Mensagem por sygecom »

Olá fladimir,
Coloquei na lista do Harbour-devel sobre a função FileValid(), vamos aguardar para ver.

Olá Hasse,
Hasse escreveu: Ao compilar um prg com esta versão acima do Harbour, devo setar sempre a variável HB_COMPILER-msvc, correto ?
Não é nescessario, veja abaixo o .BAT que uso para compilar meus aplicativos com Harbour MSVC?

Código: Selecionar todos

@echo off
cd\devel\msvc\VC
call vcvarsall.bat"
cd\sistema
SET PATH=d:\devel\hb-msvc\bin;d:\devel\hb-msvc\lib;d:\devel\hb-msvc\include;%PATH%
SET INCLUDE=%INCLUDE%;d:\devel\hb-msvc\include
SET LIB=%LIB%;d:\devel\hb-msvc\lib
SET HRB_DIR=d:\devel\hb-msvc
%SystemRoot%\system32\cmd.exe
Bem, setei esta variável acima e ao compilar tenho o seguinre erro:
hbmk2: Erro: Executando compilador C. -1
cl.exe -nologo -c -Gs -Ot2b1 -IC:\Harbour\trunk\Harbour\include box.c

1-Este arquivo box.c não está na pasta C:\Harbour\trunk\Harbour\include box.c

2-Não está faltando uma barra reversa entre include e box.c ?
Hasse, acho que esta faltando apenas as variaveis de ambiente do MSVC, que no meu exemplo acima é executado por: call vcvarsall.bat" e o box.c é o arquivo .C gerado pelo harbour+hbmk2, porem não esta linkando com o MSVC por que não está achando ele, então de uma revisada nas variaveis de ambiente que falta pouco para compilar seu aplicativo com MSVC.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder