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.