Página 1 de 1

Como se passa uma diretiva ao compilar?

Enviado: 22 Mar 2011 09:15
por ricardo-barros
Pessoal,

Eu já inseri nos prg do meu sistema as declarações #IfDef __DOS__ para que ele saiba o que fazer quando as funções forem usadas no modo console. Mas não sei como informar isso ao compilar.

Gostaria de saber isso no Harbour e no xHarbour pois ainda não decidi qual dos dois vou utilizar.

Quem sabe aí, por favor me diga.

Re: Como se passa uma diretiva ao compilar?

Enviado: 22 Mar 2011 10:45
por alxsts
Olá!

A informação abaixo funciona no xHarbour. Não posso afirmar que funcione no Harbour mas, acredito que sim pois vem desde o Clipper.

O que você precisa é passar esse parâmetro na compilação:
- se estiver usando HBMake, na seção Opções do xHarbour / User Defines, informe o teu define ( __DOS__ ) .
- se estiver compilando pela linha de comando, use o switch /d ( /d__DOS__ )
Naturalmente, como você já mencionou, é preciso tratar isto na aplicação:

Código: Selecionar todos

Function Main()

   #ifDef __DOS__
      Alert( "Versao DOS" )
   #else
      Alert( "Versao Foo" )
   #endif

   // comandos comuns às duas versões...

   Return NIL

Re: Como se passa uma diretiva ao compilar?

Enviado: 22 Mar 2011 17:54
por ricardo-barros
Obrigado, colega.

Mais alguém poderia dizer como eu faço isso (agora no Harbour 2.0)?

Eu uso o Hbmk2 pra compilar.

Re: Como se passa uma diretiva ao compilar?

Enviado: 22 Mar 2011 18:37
por alxsts
Olá!

Sinceramente nunca usei o HBMk2. Até executei mas não consta nenhum parâmetro relacionado. Com certeza dá para fazer pela linha de comando do Harbour, como escrevi anteriormente
alxsts escreveu:- se estiver compilando pela linha de comando, use o switch /d ( /d__DOS__ )
Vamos aguardar a manifestação dos colegas...

Re: Como se passa uma diretiva ao compilar?

Enviado: 22 Mar 2011 20:13
por asimoes
No harbour faça assim:

No seu PRG:

// #IFDEF VERSAO_DE_TESTE1
// Info("VERSÃO DE TESTE1" )
// #ENDIF
// #IFDEF VERSAO_DE_TESTE2
// Info("VERSÃO DE TESTE2")
// #ENDIF

No HBM:

Código: Selecionar todos

# ---------------------------
# Nome do Executável
# ---------------------------
-oteste
# ---------------------------
# Bibliotecas
# ---------------------------
-llibct
-lhbnf
-lhbwin
# ---------------------------
# Caminho dos Includes
# ---------------------------
-incpath=d:\harbour\bcc\include;
# ---------------------------
# Caminho das Libs da MiniGui
# ---------------------------
-Ld:\minigui\lib
-Ld:\minigui\harbour\lib
# ---------------------------
# Outros Parâmetros
# ---------------------------
-workdir=.\OBJ\
-head=full
-n
-dVERSAO_DE_TESTE1
-dVERSAO_DE_TESTE2
-nowarn
-inc
#-icon=.\IMG\PRINT.ICO
#-icon=clock.ico
# ---------------------------
# Prg(s) e Rc(s)
# ---------------------------
teste
# ---------------------------
# Fim
# ---------------------------

Re: Como se passa uma diretiva ao compilar?

Enviado: 23 Mar 2011 12:52
por ricardo-barros
Obrigado, Asimoes

Eu que prefiro usar arquivos make já tinha feito um para usar com o Hbmk2 porém ele se resumia a uma lista de prgs. Vou usar suas dicas para enriquecê-lo e implantar a diretiva de compilação.

Gostaria de ver também um exemplo para o xHarbour (Hbmake)

Se mais alguém puder colaborar, agradeço.