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
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
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);
}
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
Co z opcją wyboru pliku?
GNU Marka: https://www.gnu.org/software/make/manual/html_node/File-Function.html
Nie działa z make-3.81 przynajmniej na Ubuntu 14.04. – Sergey
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