Wie kann ich definieren #define in mein Make-Dateien
In meinem c/c++ - Dateien, gibt es mehrere #define. Als Beispiel:
#ifdef LIBVNCSERVER_HAVE_LIBZ
/* some code */
#ifdef LIBVNCSERVER_HAVE_LIBJPEG
/* some more code */
Können Sie mir bitte sagen, wie kann ich ändern, mein Makefile.in so dass ich diese #define in ALLE Dateien während der Kompilierung?
Danke.
- ändern Sie ggf. konfigurieren.ac oder Makefile.bin statt. Makefile.in ist nicht für den menschlichen Verzehr bestimmt.
- konfigurieren.ac wird, müssen die Werte irgendwo in der Datei Makefile.in. Makefile.im soll zum Teil für den menschlichen Verzehr - es sei denn, Sie sind mit Automake oder etwas anderes Makefile zu generieren.in.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte passieren diejenigen, die in
CPPFLAGS
,oder machen neue variable
und übergeben es an
CPPFLAGS = -DEXISTINGFLAGS $(CUSTOMDEFINES)
Diese endlich übergeben wird
gcc/g++ -D...
CPPFLAGS
Fügen Sie die Zeile unten, zu Ihrem makefile:
Dies ist, um zu dienen als ein Beispiel, werden Sie nur fügen Sie eine andere definieren, um die
DEFINES
variable wird verwiesen auf die Linie, wie$(cc) -D$(DEFINES)
in denen die machen automatisch erweitern Sie die variable, und kompilieren Sie diejenigen sind, die#ifdef
d.Dank R Samuel Klatchko für den Hinweis auf ein kleines übel...das ist speziell für GNU make, die Sie verwenden können, addprefix tun, richtig tun ($(addprefix -D, $(DEFINIERT))).
-DLIBVNCSERVER_HAVE_LIBZ LIBVNCSERVER_HAVE_LIBJPEG
). Wenn Sie GNU-make, die Sie verwenden können, addprefix tun, richtig tun ($(addprefix -D, $(DEFINES))
).Nicht ändern Sie Ihre Makefile.in. (und überlegen, Automake und konvertieren Sie Ihre Makefile.in einem viel einfacher Makefile.bin). Der ganze Sinn dieser #definiert ist, lassen Sie das configure-Skript definieren Sie in der Konfiguration.h, und Ihre source-Dateien sollte #include <config.h>. Wenn Sie für den Unterhalt der Paket, Sie benötigen, zu schreiben, tests zu konfigurieren.ac, um zu bestimmen, ob oder ob nicht das system selbst verwendet hat libvncserver installiert, die mit jpeg-und zlib-Unterstützung. Wenn Sie ändern Makefile.in immer Sie definiert werden, dann machen Sie die Annahme, dass Ihr code wird nur gebaut, auf Maschinen, auf denen diese Funktionen zur Verfügung stehen. Wenn Sie von dieser Annahme ausgehen, sollte man noch hinzufügen-Prüfungen zu konfigurieren.ac, um es zu bestätigen, und haben Sie das configure-Skript fehlschlagen, wenn die Abhängigkeiten nicht erfüllt sind.