können Sie den folgenden Befehl verwenden, um eine WARN_OPTS
Variable geeignet für die Injektion in direkt zu bekommen Makefile
:
gcc --help=warnings | awk '
BEGIN { print "WARN_OPTS = \\" }
/-W[^ ]/ { print $1" \\"}
' | sed 's/^-W/ -Wno-/' >makefile.inject
Diese Sie Ausgang (in makefile.inject
) wie gibt:
WARN_OPTS = \
-Wno- \
-Wno-abi \
-Wno-address \
-Wno-aggregate-return \
-Wno-aliasing \
-Wno-align-commons \
-Wno-all \
-Wno-ampersand \
-Wno-array-bounds \
-Wno-array-temporaries \
: : :
-Wno-variadic-macros \
-Wno-vector-operation-performance \
-Wno-vla \
-Wno-volatile-register-var \
-Wno-write-strings \
-Wno-zero-as-null-pointer-constant \
Sobald das gesetzt ist in Ihrem tatsächlichen Makefile
, verwenden Sie einfach $(WARN_OPTS)
als Teil Ihrer gcc
Befehl.
Es kann eine kleine Menge Touch benötigt bis zu:
- ungültiger Optionen wie
-Wno-
loszuwerden;
- bestimmte bestimmte
-Wno-<key>=<value>
Arten reparieren; und
- entfernen Sie die endgültige
\
Zeichen.
aber das ist minimaler Aufwand im Vergleich zur Erstellung der langen Liste, etwas, was Sie jetzt einfach tun können.
Wenn Sie feststellen, dass Sie eine dieser Warnungen möchten, wechseln Sie einfach von -Wno-<something>
zurück zu -W<something>
.
Das ist seltsam. Normalerweise sollten Sie ** alle Warnungen aktivieren und bestimmte deaktivieren ... – Mat
Ja, Sie haben Recht, Sie wissen es besser! Aber stellen wir uns vor, ich habe ein Legacy-Projekt mit 4 Millionen Codezeilen, in denen ich bestimmte Fehler finden möchte. – queen3
Nun, wenn Sie nur '-Wreturn-Typ' angeben (keine anderen Warn-Flags), macht das nicht was Sie wollen? – Mat