2010-04-19 31 views
5

Quiero crear un archivo .c desde un Makefile. El contenido de ese archivo C es el siguiente:Cómo crear un archivo usando Makefile

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

¿Es posible?

Gracias de antemano

+0

ver este [pregunta] (http://stackoverflow.com/questions/1327998/calling-sed-for-a-source-in-makefile-am) de cómo se puede usar sed en un archivo MAKE. – kgiannakakis

Respuesta

7

Sí, se puede utilizar la redirección de la cáscara para escribir las variables en al archivo de origen:

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

(el signo @ no está aquí para tener el comando echo mostrada por marca).


EDIT: No sé cuál es su intención aquí, pero podría ser más fácil de pasar las variables Makefile al compilador como macro:

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

con ser prog.c:

#include <stdio.h> 

int main(int ac, char **av) 
{ 
    printf("%s\n", VAR); 
    exit(0); 
} 
+0

Hola, actualmente estoy pasando la variable como marco al compilador. Pero este caso falla cuando el valor de VAR cambia sin modificar el Makefile. Por ejemplo, VAR: = $ (tiempo de shell +% H% M% S) Quiero hacer esto es un Makefile para un objeto kernel. AFAIK No existe una regla de "todo:" en el Makefile del módulo kernel. ¡De lo contrario, tu primera solución es genial! Sé poco sobre Makefiles. – PrashantB

Cuestiones relacionadas