Wie stelle ich sicher, dass mein Code mit -o3 in gnu make kompiliert wird?

559
Volumetricsteve

Ich habe ein riesiges Makefile, mit dem ich arbeite und versuche, es zu beschneiden. Im Moment ist es darauf angelegt, mehrere verschiedene Programme mit unzähligen Optionen zu erstellen, die ich niemals verwenden werde. Ich hoffe, zuerst sicherzustellen, dass der Code richtig aufgebaut ist, und dann Teile ausschneiden, die ich nicht benötige.

Zuerst möchte ich sicherstellen, dass mein Code beim Kompilieren mit -o3 (viele Optimierungen) sichergestellt wird, aber ich bin mir nicht sicher, ob dies der Fall ist. Ich sehe ein Stück des Makefiles, das sagt:

ifeq ($(findstring $(CFLAGS),-O),) CFLAGS_COMMON += -O3 # only add -O3 if no -O flag is in $(CFLAGS) endif 

Was gibt etwas Trost ... aber muss nicht ein -O-Flag vorhanden sein, um überhaupt kompiliert zu werden, und die If-Anweisung negieren?

Hier ist das gesamte Makefile: http://textuploader.com/bj98

0
!) Diese Option verwendet ein "O". 2) Siehe http://stackoverflow.com/questions/5820303/how-do-i-force-make-gcc-to-show-me-the-commands und den ausführlichen Modus in http://elinux.org/Debugging_Makefiles sawdust vor 8 Jahren 0

1 Antwort auf die Frage

1
jcoppens
LDFLAGS ?= CFLAGS ?= CXXFLAGS ?= CPPFLAGS ?= LIBS ?= RADIANT_ABOUTMSG ?= Custom build 

Ich würde hinzufügen -O3zu CPPFLAGS, CXXFLAGSund CFLAGS. ABER:

Dadurch wird nur der Code der geänderten Dateien Ihres Projekts geändert. Um sicherzugehen, dass alle Ihre Dateien neu kompiliert werden, sollten Sie dies make cleanzuerst tun . ABER:

Dies garantiert keine extern verknüpften Dateien, wie z. B. Bibliotheken. Die werden im Allgemeinen nicht mit kompiliert -O3. Wenn Sie sichergehen möchten, dass dies der Fall ist, müssen Sie auch alle Bibliotheken neu kompilieren (und nicht vergessen, alle ihre Makefiles zu ändern!). Und. Wenn diese Dateien von anderen Bibliotheken abhängen (wahrscheinlich auch), müssen Sie diese auch neu kompilieren.

Wenn dies hilfreich war, vergessen Sie nicht, die Antwort als akzeptiert zu markieren (klicken Sie auf das "V" links neben der Antwort) und / oder klicken Sie auf die Antwort (Klicken Sie auf den Aufwärtspfeil). So können andere es leichter finden! Vielen Dank. jcoppens vor 8 Jahren 0