Ich habe einen einfachen printf C-Code geschrieben und ein einfaches Makefile erstellt. Als ich mit CFLAGS, CPPFLAGS und LDFLAGS laufen zu lassen, geht die Werte der Variablen in eine cc Ausführung, ohne dass diese Werte durch eine gcc Ausführung gefolgt, wie folgt aus:CFLAGS CPPFLAGS und LDFLAGS rufen cc auf aber übergeben die Werte nicht an gcc
$ CFLAGS="-I." CPPFLAGS="-D TESTEDEFINE" CXXFLAGS="TESTECXXFLAGS" LDFLAGS="-L." LFLAGS="TESTELFLAGS" make
cc -I. -D TESTEDEFINE -L. teste.c -o teste
gcc -o teste teste.c
Wenn ich laufe das eingebaute Programm, das define ist nicht definiert, da es mir den printf der nicht definierten #else gibt.
teste.c
#include <stdio.h>
int main()
{
#if defined(TESTEDEFINE)
printf("TESTEDEFINE!!!");
#else
printf("!!!");
#endif
return 0;
}
Makefile
all: teste
gcc -o teste teste.c
Wenn Sie sagen, dass 'gcc -o teste teste.c' ausgeführt werden soll, wird es ausgeführt. Wenn Sie diese Zeile entfernt haben, könnten die Makros funktionieren. Oder verwenden Sie '$ {CC} -o $ @ $ {CPPFLAGS} $ {CFLAGS} $ {LDFLAGS} $ {LDLIBS}' stattdessen als Rezeptzeile. –
Also funktionieren die Flags nur, wenn ich sie explizit im Makefile verwende oder wenn ich den Befehl für die Regel weglasse? –
könnte hilfreich sein, um Ihr Makefile in seiner Gesamtheit zu sehen ... oder ist das, was Sie gezeigt haben? Wenn ja, Sie haben keine Witze über "einfaches Makefile" – yano