2010-04-19 1 views
5

Je veux créer un fichier .c à partir d'un Makefile. Le contenu de ce fichier C est le suivant:Comment créer un fichier en utilisant Makefile

char *variable1 = $(VAR1_FROM_MAKEFILE); 
char *variable2 = $(VAR2_FROM_MAKEFILE); 

Est-ce possible?

Merci à l'avance

+0

Voir cette [question] (http://stackoverflow.com/questions/1327998/calling-sed-for-a-source-in-makefile-am) sur la façon dont vous peut utiliser sed dans un makefile. – kgiannakakis

Répondre

7

Oui, vous pouvez utiliser la redirection du shell pour écrire des variables pour le fichier source:

VAR1=foobar 
all: 
    @echo "char *variable1 = \"$(VAR1)\"" > generated.c 

(le signe @ est ici de ne pas avoir la commande echo affiché par marque).


EDIT: Je ne sais pas quelle est votre intention, mais il pourrait être plus simple de passer les variables Makefile au compilateur comme macro:

VAR="toco.conf" 
CFLAGS = -DVAR='$(VAR)' 
all: 
    gcc $(CFLAGS) prog.c 

Avec être prog.c.:

Qu'en est-il de l'option de fichier de make?
+0

Salut, je passe actuellement la variable en tant que marco au compilateur. Mais ce cas échoue lorsque la valeur de VAR change sans modifier le Makefile. par exemple VAR: = $ (temps de shell +% H% M% S) Je veux faire cette chose est un Makefile pour un objet noyau. AFAIK Il n'y a pas de règle "all:" dans le Makefile du module du noyau. Sinon, votre première solution est géniale! Je sais peu de choses sur Makefiles. – PrashantB