2010-04-19 28 views
5

Chcę utworzyć plik .c z pliku Makefile. Treść tego pliku C wygląda następująco:Tworzenie pliku przy użyciu Makefile

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

Czy to możliwe?

Dzięki z góry

+0

Zobacz ten [Pytanie] (http://stackoverflow.com/questions/1327998/calling-sed-for-a-source-in-makefile-am), w jaki sposób może użyć sed w pliku makefile. – kgiannakakis

Odpowiedz

7

Tak, można użyć powłoki przekierowanie napisać zmiennych do pliku źródłowego:

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

(znaku @ znak nie jest tu mieć echo polecenia wyświetlany przez make).


EDIT: Nie wiem jaki jest twój zamiar tutaj, ale może to być prostsze przekazać zmienne Makefile do kompilatora jako makro:

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

Z prog.c samopoczucie:

#include <stdio.h> 

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

Witam, aktualnie przekazuję zmienną jako marco do kompilatora. Ale przypadek ten nie powiedzie się, gdy wartość VAR zmieni się bez modyfikowania pliku Makefile. np. VAR: = $ (czas powłoki +% H% M% S) Chcę to zrobić to plik Makefile dla obiektu jądra. AFAIK W pliku Makefile modułu jądra nie ma reguły "all:". W przeciwnym razie twoje pierwsze rozwiązanie jest świetne! Niewiele wiem o plikach Makefile. – PrashantB

Powiązane problemy