Página 1 de 1

HARBOUR

Enviado: 04 Nov 2017 17:50
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

HARBOUR

Enviado: 05 Nov 2017 07:01
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.

HARBOUR

Enviado: 05 Nov 2017 15:59
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.

HARBOUR

Enviado: 05 Nov 2017 16:15
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

HARBOUR

Enviado: 07 Nov 2017 09:43
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

HARBOUR

Enviado: 07 Nov 2017 10:18
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.

HARBOUR

Enviado: 07 Nov 2017 19:50
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

HARBOUR

Enviado: 08 Nov 2017 00:29
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=