Usar algo como #ifdef nos arquivos .hbp

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

Moderador: Moderadores

marco.prodata
Usuário Nível 3
Usuário Nível 3
Mensagens: 238
Registrado em: 30 Nov 2018 10:07
Localização: Caratinga

Usar algo como #ifdef nos arquivos .hbp

Mensagem por marco.prodata »

Caros,

É possível usar algo como o #ifdef nos arquivos .hbp?
Estou precisando de algo assim no arquivo .hbp:

#ifdef TESTE
-lteste1
#else
-lteste2
#endif

Nesse caso não é pra compilação entre linux e windows, isso sei que tem como fazer com o {win} ou {linux} na frente.
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Usar algo como #ifdef nos arquivos .hbp

Mensagem por clodoaldomonteiro »

Olá.

Você pode criar um .bat para cada tipo de compilação que vc precisar.

T+
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
marco.prodata
Usuário Nível 3
Usuário Nível 3
Mensagens: 238
Registrado em: 30 Nov 2018 10:07
Localização: Caratinga

Usar algo como #ifdef nos arquivos .hbp

Mensagem por marco.prodata »

clodoaldomonteiro escreveu:Olá.

Você pode criar um .bat para cada tipo de compilação que vc precisar.

T+
Sim, já considerei essa opção, mas como o hbmk2 é uma ferramenta muito poderosa, estou pesquisando pra ver se consigo resolver essa situação de uma forma "melhor", gerando o minimo esforço futuro.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usar algo como #ifdef nos arquivos .hbp

Mensagem por JoséQuintas »

A princípio acho a necessidade meio anormal, porque vai gerar EXE sem nem saber qual a LIB usada.

Mas dê uma olhada no manual do HBMK2, ou em modelos existentes no Harbour.

Se não me engano, dá pra testar se arquivo existe e outras coisas mais.

hbmk2 -longhelp

ou direto no github

https://github.com/harbour/core/blob/ma ... 2.pt_BR.md

O que eu uso é um "pré-hbmk2", e nele faço o que eu quero antes de chamar hbmk2.
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
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Usar algo como #ifdef nos arquivos .hbp

Mensagem por Vlademiro »

Vc pode criar uma variavel de ambiente. E colocar essa variavel no começo da linha entre chaves. Como abaixo. Assim, o arquivo só entra na compilação se essa variavel tiver declarada. No hbp abaixo a variavel é SISTEMAS_PATH_TO_HMG

{SISTEMAS_PATH_TO_HMG}hmgsearch.prg
{SISTEMAS_PATH_TO_HMG}vhmgsearch.prg

hmglookup.prg
hmglookupsearch.prg

myalert.prg
marco.prodata
Usuário Nível 3
Usuário Nível 3
Mensagens: 238
Registrado em: 30 Nov 2018 10:07
Localização: Caratinga

Usar algo como #ifdef nos arquivos .hbp

Mensagem por marco.prodata »

Resolvido, o hbmk2 tem como setar variaveis de ambiente direto na linha de comando como:
hbmk2 prog.exe.hbp -env:teste=1

e depois no .hbp usar
{teste}-llibteste

Era isso que precisava, obrigado pelas dicas
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Usar algo como #ifdef nos arquivos .hbp

Mensagem por JoséQuintas »

Já que assim resolve, cria HBC para as LIBs.

exemplo1:
Supondo que fossem 2 HWGUI de versões diferentes, em pastas diferentes:
HWGUI 2.17 e hwgui 2.21

\hwgui217\hwgui.hbc
#\hwgui221\hwgui.hbc

e nos arquivos hbc:
incpaths=include
libpaths=lib
as pastas são relativas à localização do hbc, então cada hbc vai indicar uma lib diferente de pasta diferente.

exemplo2:
Indica no projeto que pasta pesquisar
-L\hwgui217
#-L\hwgui221
hwgui.hbc
Neste caso a pasta pode indicar pasta de HBC ou pasta de LIB

Quando quiser trocar, é só tirar # de um e colocar no outro.
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