Dica do dia: Compilar usando HBP/HBC/HBM/etc

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

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

Dica do dia: Compilar usando HBP/HBC/HBM/etc

Mensagem por JoséQuintas »

Isso é uma coisa básica.

Compilar nos tempos do Clipper:

Compila com Clipper
Linquedita com RTLink

Compilar nos tempos do Harbour:

Compila com Harbour - o que gera um fonte em C
Compila com C - o nome depende do compilador C
Linquedita - o nome depende do compilador C

Aqui, a diferença entre o Clipper é que passa por um intermediário em C, e pode ser usado compilador C: mingw, bcc, msvc, pelles C, etc.
pode ser bcc.exe, gcc.exe, ilink.exe, link.exe, c.exe, etc., com parâmetros quase infinitos em cada compilador C.
Pra descomplicar, o Viktor criou o HBMK2, que traduz tudo isso a um único jeito de compilar.

HBP:

O HBP nada mais é do que os parâmetros que seriam colocados na linha do prompt.

hbmk2 teste.prg
O HBP equivalente teria só a segunda parte: teste.prg

hbmk2 teste.prg teste2.prg GTWVG.hbc hbhpdf.hbc
O HBP equivalente teria todos esses parâmetros. teste.prg teste2.prg GTWVG.hbc hbhpdf.hbc
Para o HBP tanto faz se tudo está em uma única linha, ou uma "palavra" por linha.

HBC:

Este é direcionado mais pra LIB.
Por exemplo, a GTWVG acaba usando arquivos CH próprios e a lib HBWIN
Então foi criado um arquivo GTWVG.hbc, que já contém essas dependências, afinal, se usar GTWVG obrigatoriamente vai precisar do restante.

HBM:

Esse é pra exceções, ou situações muito específicas. Seria igual HBC, mas direcionado a todos os fontes de uma determinada pasta.
Supondo que tenha uma pasta com vários exemplos de uma determinada LIB, poderia pelo HBM definir a necessidade de todos os fontes da pasta de uma vez.

\Harbour\bin\hbmk.hbc

Este é interessante: permite definir um padrão de compilação para o Harbour, que será usado automaticamente em TODAS as compilações.
Como exemplo, se sempre compacta os EXEs, poderia colocar aqui, e TUDO que compilar já vai ser compactado, SEMPRE.

Onde usar cada um:

HBP: geralmente tem projetos, então vai usar um HBP para cada projeto
HBC: Este atende LIBs, ex. HWGUI, HMG Extended, gtwvg, etc.... o objetivo deste é indicar todo conjunto do que pertence a lib.
HBM: é só pra quando os anteriores não servirem, então pode ser que nunca use.

Vamos supor que vai usar GTWVG: ela tem arquivos CH, depende do uso da HBWIN ( lib Windows), e depende de indicar que é GUI na hora de linqueditar.
Vai lembrar de tudo isso? ... complicado... então... indicando GTWVG.hbc já vai estar fazendo tudo isso, porque o HBC indica tudo relacionado com a lib.

Tem as exceções... por exemplo na mesma GTWVG: não concordo que sejam adicionados os CH automaticamente. O problema é que isso pode gerar conflitos.
Aliás... se fosse certo assim, deveria ser adicionada a inkey.ch a todos os fontes, acho que é o ch mais usado de todos.
Tem essas exceções, mas no geral, HBP e HBC resolvem tudo.

Já que chegamos até aqui, outros arquivos:

RC

Esse é pra resources, recursos adicionados ao EXE, imagens por exemplo, e pode existir diferença no modo de preencher o conteúdo, conforme o compilador C.

RES

É outro formato pra resources, também varia conforme o compilador C

Manifest

Esse é direcionado ao Windows, indica configurações que devem ser obedecidas antes de executar o EXE.

Quando usar estes outros?
Se não precisou até agora, sinal de que não precisa, e vai saber quando precisar.


Importante:
Mesmo que não use, é bom saber para que serve, nunca se sabe se pode ter arquivos destes nas pastas, atrapalhando a compilação.
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

Dica do dia: Compilar usando HBP/HBC/HBM/etc

Mensagem por JoséQuintas »

#include "inkey.ch"

Isto é mais velho que andar pra frente, mas é bom lembrar.
Isso indica pra adicionar o arquivo INKEY.CH ao fonte na hora de compilar.
Se não existir o arquivo INKEY.CH, vai dar erro de compilação, é lógico.

O HBMK2 já indica aonde estão os CH comuns, por isso na maioria dos casos nem percebemos que precisava.

No Clipper, isso era definido pela variável SET INCLUDE= que indicava o PATH dos arquivos CH.

Quais paths preciso configurar?
Compila... se der erro de faltar CH, aí sim vai indicar aonde está, ou o HBC correspondente, ou apagar o #include se estiver lá por engano.
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