HARBOUR

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

Moderador: Moderadores

nvascon
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 20 Mar 2012 07:37
Localização: MONTE MOR/SP

HARBOUR

Mensagem por nvascon »

Boa a tarde.

Estou há tempo tentando migrar para harbour, mas não consigo compilar.

Tenho instalado na mina maquina o hmg.3.4.4
Alguém poderia verificar se o bath está errado.
Está dando a seguinte mensagem: hbmk2: Processando opções do ambiente: -comp=msvc

NILSON


SET HB_INSTALL_PREFIX=c:\harbour

SET HB_COMPILER=msvc

hbmk2 projeto.hbp -comp=mingw
hbmk2 projeto.hbp -comp=msvc
hbmk2 projeto.hbp -comp=bcc

hbmk2 projeto.hbp -comp=mingw
hbmk2 projeto.hbp -comp=msvc
hbmk2 projeto.hbp -comp=bcc

SET PATH=%PATH%;c:\BCC55\BIN;c:\hmg.3.4.4\HARBOUR\bin



SET INCLUDE=c:\hmg.3.4.4\HARBOUR\include;c:\Bcc55\include;c:\hmg.3.4.4\MINGW\bin;c:\hmg.3.4.4\HARBOUR\bin
SET LIB=c:\Bcc55\lib;c:\hmg.3.4.4\HARBOUR\lib;c:\MINGW\lib

SET HB_PATH=C:\hmg.3.4.4\HARBOUR
Avatar do usuário
RobertoLinux
Usuário Nível 3
Usuário Nível 3
Mensagens: 110
Registrado em: 14 Abr 2014 18:32
Localização: Fortaleza/Ce

HARBOUR

Mensagem por RobertoLinux »

Olá.

Eu não tenho certeza, mas a var ambiente HB_INSTALL_PREFIX ta apontando para outra pasta, verifique tbm os arquivos BCC32.CFG E ILINK.CFG.

Felicidades.
Entusiasta
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HARBOUR

Mensagem por JoséQuintas »

O que está errado é tudo, começando pelo programador...... rs

Um grande erro destas bost.s de LIBs é pensar que elas são um produto individual, que não tem nada a ver com Harbour/XHarbour.
Elas ensinam tudo errado, pra deixar preso a elas.

Como compilar com Harbour/XHarbour: Configurar O HARBOUR/XHARBOUR

1) Path do Harbour/XHarbour e configurações básicas

Exemplo:

set PATH=c:\harbour\bin;%PATH%
set HB_INSTALL_PREFIX=c:\harbour

2) Path do Compilador C e configurações básicas.

Depende do compilador, sendo que alguns não são aceitos no Harbour 3.4
Pode até configurar todos ao mesmo tempo.

Exemplos:

set PATH=c:\harbour\comp\mingw\bin;%PATH%
set PATH=c:\harbour\comp\msvc2010\bin;%PATH%
set PATH=c:\harbour\comp\bcc55\bin
set PATH=c:\harbour\comp\pocc\bin

Para BCC, MSVC e POCC, também a pasta de LIBs e includes

Depende do compilador, mas para os que precisam de INCLUDE/LIB, não pode configurar todos ao mesmo tempo, porque eles conterão nomes iguais., tanto de .H, quanto .LIB
Sendo que pode precisar indicar arquivos do compilador C, e também do kit Windows (SDK)

Exemplos .lib

set LIB=c:\harbour\comp\bcc55\lib
set LIB=c:\harbour\comp\msvc2010\lib
set LIB=c:\harbour\comp\pocc\lib

Exemplos arquivos .H (include), sendo que pode precisar indicar arquivos do compilador C, e também do kit Windows (SDK)

set INCLUDE=c:\harbour\comp\bcc55\include
set INCLUDE=c:\harbour\comp\pocc\include;c:\harbour\comp\pocc\include\win
set INCLUDE=c:\harbour\comp\msvc2010\include

E para o compilador C default, que vai usar sempre, pode deixar pré configurado

exemplo

set HB_COMPILER=mingw
set HB_COMPILER=bcc
set HB_COMPILER=mingw64

3) Pra completar, caso seja XHarbour e queira usar o HBMK2, precisa copiar do Harbour o HBMK2.EXE pra pasta harbour\bin porque o XHarbour não tem

4) O Harbour precisa conter as LIBs no formato do compilador C, assim como a biblioteca, que no seu caso é HMG Extended
Se for da maneira correta, a pasta \harbour\lib\win vai conter pastas para cada compilador C
Só vai poder usar o compilador C que possuir pasta de LIB correspondente

\harbour\lib\win\msvc
\harbour\lib\win\msvc64
\harbour\lib\win\mingw
\harbour\lib\win\mingw64
\harbour\lib\win\pocc
\harbour\lib\win\pocc64

5) Por último, também importante: precisa das LIBs da HMG Extended no mesmo compilador C do Harbour/XHarbour.
Se não existir, é gerar a LIB

Se a LIB possuir HBP/HBC geralmente é mais fácil, desde que as LIBs tenham feito eles da forma correta.
Senão, talvez melhor criar seus próprios arquivos pra LIB.

Pra pensar:

Não adianta passar seus PATHs e suas configurações, porque não dá pra ninguém adivinhar o que tem instalado nessas pastas, e nem mesmo dá pra saber se essas pastas existem.

Mas uma coisa é certa: Não existe oficialmente um Harbour 3.4 pra funcionar com BCC

Se estiver configurado errado, é só olhar as mensagens:

- Se não encontrar o compilador Harbour/XHarbour.... é porque a pasta BIN dele não está no path, ou não está instalado

- Se não encontrar o compilador C... é porque a pasta BIN dele não está no path, ou não está instalado

- Se der falta de arquivo CH... é porque não está no INCLUDE, não está no HBP, ou não existe

- Se der falta de arquivo LIB/.A... é porque não está no LIB, não está no HBP, ou não existe para o compilador C escolhido

- Se der falta de funções.... é porque falta indicar algum PRG, alguma LIB, ou o nome dentro do fonte tá errado

Isso vale pra qualquer compilador Harbour/XHarbour, qualquer compilador C, qualquer LIB.
É tudo igual, mas eles tem mania de inventarem formas diferentes.

Faltou dizer:

Para usar o HBMK2.EXE no XHarbour é necessário SEMPRE acrescentar na linha de comando -xhb (ou talvez dentro do HBP, precisa confirmar)

Então agora, com base no texto, confirme o que existe ou não na sua máquina.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HARBOUR

Mensagem por JoséQuintas »

Também faltou dizer:

hbmk2 projeto.hbp -comp=mingw
hbmk2 projeto.hbp -comp=msvc
hbmk2 projeto.hbp -comp=bcc

A opção -comp é pra usar um compilador diferente do que está em HB_COMP.
Mas continuam valendo todas as regras: se não tem o compilador C indicado, ou as LIBs para o compilador C indicado, não vai criar o EXE.

Só comentário a mais:
Não é tão difícil quanto parece. é confirmar que tudo vai ser encontrado.

Para cada "extensão" de arquivo, vai ser usada uma forma diferente de indicar o PATH

- set PATH para EXEs
- set INCLUDE para .H e .CH
- set LIB para .LIB ou .A
- set OBJ para .OBJ
- dentro do HBC, indicando libpaths= incpaths=
- dentro do HBP, indicando -Lpath, -Ipath

Nem adianta falar que os 4 primeiros ítens são complicados, porque no CLIPPER era do mesmo jeito, portanto igual há uns 30 anos.
Se ainda não entendeu... tá na hora de entender.
E as LIBs não deveriam esconder isso.... mas encondem ao ficarem criando BATs e inventando variáveis diferentes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
nvascon
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 20 Mar 2012 07:37
Localização: MONTE MOR/SP

HARBOUR

Mensagem por nvascon »

Sr. JoséQuintas

Muito grato pela atenção aos meus questionamentos.
Com sua ajuda consegui caminhar mais um pouco.
Agora estou com outra dificuldade que espero que o Sr. possa me ajudar:
hbmk2: Erro: Executando compilador C/C++. -1 gcc.exe -c -O3 -W -Wall -pipe -Ic:/hmg..3.4.4/HARBOUR/include C:/Users/Nilson/AppData/Local/Temp/hbmk_vqbe7p.dir/tela1.c C:/Users/Nilson/AppData/Local/Temp/hbmk_vswaiu.c

Como sair dessa

Grato

Nilson
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HARBOUR

Mensagem por JoséQuintas »

Este começo é suficiente pra saber o que deu errado
bmk2: Erro: Executando compilador C/C++. -1 gcc.exe
não encontrou o gcc.exe
Um jeito de procurar.
dir \gcc.exe /s/b

d:\harbour\comp\mingw\mingw64\bin\gcc.exe
d:\hb32\comp\mingw\bin\gcc.exe
Uma vez encontrado, é colocar no PATH a pasta do gcc.exe que vai usar
No meu caso, sei que é o dentro de d:\harbour porque é o Harbour 3.4

SET PATH=d:\harbour\comp\mingw\mingw64\bin;%PATH%

Lembrando que o Windows vai pesquisar toda lista que estiver em PATH, então cuidado pra não indicar mais de um local que tenha gcc.exe
Esse gcc.exe faz parte do pacote de compilador C que acabamos chamando de mingw.

Pra testar se configurou direito o GCC é simples, ele precisa funcionar.... rs
Só digitar

GCC <ENTER>

Se carregar o GCC.EXE, quer dizer que está no PATH.
É pra isso que serve o SET PATH, pra poder chamar o programa dentro de qualquer pasta, sem ter que ir até a pasta aonde ele está instalado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
nvascon
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 20 Mar 2012 07:37
Localização: MONTE MOR/SP

HARBOUR

Mensagem por nvascon »

Sr. JoséQuintas,

O Sr. deu uma verdadeira aula de como configurar o PATH para compilar em HARBOUR.
Mas como não estamos familiarizados com tudo isso, aparecem situações que não encontramos explicações (no clipper não tinha nada disso).

se inverto a posição dessas linhas, o hbmk2 funciona ou não:

HBMK2 FUNCIONA:

set PATH=c:\BCC55\bin
set PATH=c:\hmg.3.4.4\HARBOUR\BIN


HBMK2 NÃO FUNCIONA:

set PATH=c:\hmg.3.4.4\HARBOUR\BIN
et PATH=c:\BCC55\bin

TEM UMA EXPLICAÇÃO PARA ISSO?

============================

Quando rodo só o HBMK2 -> FUNCIONA

Quando rodo o HBMK2 TESTE(MEU PRG) dá a seguinte mensagem:
nenhum compilador C suportado foi encontrado em seu PATH
Por favor, utilize a opção - comp= com um destes valores: mingw, ... (o que essa opção -comp= faz?

Desculpe se estiver exigindo demais; estou tentando entender.

Grato

NILSON
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HARBOUR

Mensagem por JoséQuintas »

Simples: o set path NÃO acumula lista.

Pra adicionar mais paths, pode ser usada a variável PATH, como mostrei antes.
Ou colocar entre vírgula, ou as duas coisas ao mesmo tempo.

SET PATH=c:\bcc55\bin
SET PATH=c:\hmg3.4.4\HARBOUR\BIN;c:\bcc55\bin

ou

SET PATH=c:\bcc55\bin,%PATH%
set PATH=c:\hmg3.4.4\HARBOUR\BIN;%PATH%

ou pra manter originais do Windows, talvez editor de texto, etc.

SET PATH=c:\bcc55\bin;c:\hmg3.4.4\HARBOUR\BIN;%PATH%

falou de Harbour 3.4, mas aí está indicando HMG 3.4.4, isso é a versão da minigui, não do Harbour
e bcc55 é o Borland C 5.5, o Harbour 3.4 não funciona com ele.
E naquele erro anterior, era a falta do GCC do mingw, NÃO tem nada a ver com Borland C (BCC).

Borland C: BCC32.EXE
Mingw: GCC.EXE
Quando rodo o HBMK2 TESTE(MEU PRG) dá a seguinte mensagem:
nenhum compilador C suportado foi encontrado em seu PATH
Por favor, utilize a opção - comp= com um destes valores: mingw, ... (o que essa opção -comp= faz?
O HBMK2 tenta detectar automático qual é o compilador C, através dos nomes de pastas que estão no PATH.
Como automático não encontrou nenhum, mostrou a opção de escolher manualmente, que é -comp=
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder