Como exportar variavel do Makefile para *.h? [RESOLVIDO]

1. Como exportar variavel do Makefile para *.h? [RESOLVIDO]

Marcelo Silva
silvaml85

(usa Red Hat)

Enviado em 20/08/2012 - 11:25h

Galera,

Na minha aplicação eu tenho que definir a versão em 2 lugares diferentes, num arquivo versoes.h que é onde a aplicação lê o versão e no Makefile, que é a versão gerada pelo RPM.

As 2 são sempre igual, tem como eu centralizar isso em apenas 1 arquivo? Por exemplo, definir a versão somente no Makefile e atraves de algum export essa varialvel no Makefile o versoes.h consiga ler?

Valeu!!


  


2. Re: Como exportar variavel do Makefile para *.h? [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 20/08/2012 - 20:29h

O compilador aceita que você defina o valor de uma macro na linha de comando.

Assim sendo, você pode fazer no Makefile algo como vai abaixo, mas seria forçado a recompilar todos os módulos envolvidos (em lugar de apenas aqueles que tenham sido alterados) a cada vez que mudasse a versão no Makefile.

MAKEFILE_VERSION = 1.05
CFLAGS += -DAPPLICATION_VERSION="$(MAKEFILE_VERSION)"



3. Re: Como exportar variavel do Makefile para *.h? [RESOLVIDO]

Marcelo Silva
silvaml85

(usa Red Hat)

Enviado em 21/08/2012 - 14:06h

Legal amigo, parece que funcionou, mas da um erro na hora da compilação e eu não consegui identificar o erro, se vc puder dar uma ajuda...

Para manter a minha estrutura nos arquivos fiz assim:

Makefile:
VERSAO = 02
RELEASE = 00
BUILD = 01
CFLAGS += -DAPPLICATION_VERSION="$(VERSAO).$(RELEASE).$(BUILD)"

Versoes.h:
#define VERSAO APPLICATION_VERSION

E tento usar essa cara na aplicação dessa forma:
strcpy(reg.Versao, VERSAO);

E da o seguinte erro:
gcc -I../../include -Werror -Wno-char-subscripts -O2 -Wall -Wstrict-prototypes -fno-strength-reduce -fwritable-strings -fno-const-strings -march=i386 -pipe -ggdb -rdynamic -DAPPLICATION_VERSION="02.00.01" -Wno-char-subscripts -Wno-comment -Wno-missing-braces -D_LINUX_ -c -o ../../source/comum/main.o ../../source/comum/main.c
../../source/comum/main.c: In function `Grava_Versao':
../../source/comum/main.c:568: too many decimal points in floating constant

Se eu substituir o VERSAO_AP por "02.00.01" compila sem nenhum problema.
Alguem sabe onde ta erro?

Valeu!!!



4. Re: Como exportar variavel do Makefile para *.h? [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 21/08/2012 - 22:59h

silvaml85 escreveu:

Legal amigo, parece que funcionou, mas da um erro na hora da compilação e eu não consegui identificar o erro, se vc puder dar uma ajuda...

Para manter a minha estrutura nos arquivos fiz assim:

Makefile:
VERSAO = 02
RELEASE = 00
BUILD = 01
CFLAGS += -DAPPLICATION_VERSION="$(VERSAO).$(RELEASE).$(BUILD)"

Versoes.h:
#define VERSAO APPLICATION_VERSION

E tento usar essa cara na aplicação dessa forma:
strcpy(reg.Versao, VERSAO);

E da o seguinte erro:
gcc -I../../include -Werror -Wno-char-subscripts -O2 -Wall -Wstrict-prototypes -fno-strength-reduce -fwritable-strings -fno-const-strings -march=i386 -pipe -ggdb -rdynamic -DAPPLICATION_VERSION="02.00.01" -Wno-char-subscripts -Wno-comment -Wno-missing-braces -D_LINUX_ -c -o ../../source/comum/main.o ../../source/comum/main.c
../../source/comum/main.c: In function `Grava_Versao':
../../source/comum/main.c:568: too many decimal points in floating constant

Se eu substituir o VERSAO_AP por "02.00.01" compila sem nenhum problema.
Alguem sabe onde ta erro?

Valeu!!!


Pelo visto, as aspas estao sendo interpretadas pelo shell, e só o que está entre elas está sendo passado como valor para a macro APPLICATION_VERSION.

Para corrigir isso, tente escapar as aspas, fazendo alguma coisa como o que vai abaixo.

CFLAGS += -DAPPLICATION_VERSION="\"$(VERSAO).$(RELEASE).$(BUILD)\"" 



5. Re: Como exportar variavel do Makefile para *.h? [RESOLVIDO]

Marcelo Silva
silvaml85

(usa Red Hat)

Enviado em 22/08/2012 - 10:58h

Muito Obrigado amigo, funcionou corretamente!!!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts