2013-11-24 15 views
9

Ich bin neu in cmake und gcc. Die erste Aufgabe in meiner neuen Rolle in der Gesellschaft der Fehler unserer Linux-Kompilation zu reinigen war Ich habe das meiste davon, und jetzt die einzige Warnung, die ich sehe, istwie gcc Warnung zu deaktivieren "cc1: Warnung: Befehlszeilenoption '-std = C++ 11' ist gültig für C++/ObjC++ aber nicht für C [standardmäßig aktiviert]"

cc1: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default]

ich verkümmern will, dass die zu unterdrücken Warnung oder um das Problem in der cmake-Datei zu lösen. Leider habe ich immer noch nicht die richtige -Wno-xxx Aussage gefunden, die hier passt.

Danke!

Antwort

5

Code-Problem Warnungen können mit -Wno-xxx Optionen zum Schweigen gebracht werden, weil Sie manchmal nicht die Kontrolle über den Quellcode haben. Aber eine Warnung, die besagt, dass eine Befehlszeilenoption falsch ist, kann nicht mit einer weiteren Befehlszeilenoption stummgeschaltet werden - wenn Sie den Aufruf des Compilers beeinflussen können, dann warum nicht einfach die falsche Option entfernen?

Diese besondere Warnung weist Sie darauf hin, dass Sie beim Kompilieren von C-Code den Standard nicht auf C++ 11 setzen können. Um es loszuwerden, finden Sie, wo -std=c++11 in der Erstellungskonfiguration definiert ist, und stellen Sie sicher, dass es nur auf C++ - Kompilierung angewendet wird, und nicht für C. Verschieben Sie es beispielsweise von CFLAGS zu CXXFLAGS, oder cmake-Äquivalent davon.

+0

Ich bin in der Lage, diesen Kommentar zu entfernen, wenn ich die Warnung deaktivieren "Warnen, wenn '0' als Null Zeigerkonstante verwendet wird [-Wero-as-Null-Zeiger-const]. Nicht sicher, wie es verwandt ist –

+0

@JonWheelock Diese Frage bezieht sich auf die Warnung, die bei der Verwendung von "-std = C++ 11" beim Kompilieren von C erzeugt wird. Laut [der Dokumentation] (https://gcc.gnu.org/onlinedocs/gcc/Warning-Options. html), '-Wno-zero-as-null-pointer-const' ist eine C++ - Option und wird von gcc beim Kompilieren von C-Dateien nicht einmal erkannt. – user4815162342