为特定的文件/文件夹禁用-Wall标志

gcc disable -Wall flag for specific files/folders

本文关键字:-Wall 标志 文件夹 文件      更新时间:2023-10-16

我有一些开源库文件在我的项目(例如:http://nothings.org/stb_vorbis/stb_vorbis.c)。-墙选项在我的Android中是启用的。可文件。在编译期间,stb_vorbis.c中会生成几个警告。

warning: unused variable <var>
warning: statement with no effect
warning: <var> defined but not used
warning: <var> may be used uninitialized in this function

出于某种原因,我不想修改stb_vorbis.c,但仍然希望-Wall选项可用于我自己的源文件。

是否有办法为特定文件/文件夹禁用-Wall选项?

有没有办法为特定的文件/文件夹禁用-Wall选项?

我不相信有任何gcc选项可以用来实现这一点。您需要更改用于编译有问题的源文件的Makefile。

你可以这样写

CFLAGS:=$(filter-out -Wall, $(CFLAGS))

在Makefile for stb_vorbis,如果您的make支持filter-out功能。

你也可以为stb_vorbis.c写一个特定的规则:

STB_VOBIS_CFLAGS:=$(filter-out -Wall, $(CFLAGS))
stb_vorbis.o: stb_vorbis.c ...
        $(CC) $(STB_VOBIS_CFLAGS) -o $@ -c $<

虽然没有办法用一个选项关闭-Wall,但是您可以在GCC中关闭特定的警告,使用-Wno-*来警告*。因此,例如,要抑制未使用的变量警告,可以添加-Wno-unused-variable。有关不同警告选项的更多信息,请参阅http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html。

例如,您可以使用特定于目标的变量,如:

stb_vorbis.c: CFLAGS += -Wno-unused-variable

使用特定于目标的变量,您可以附加-w选项来禁止stb_vorbis.c文件的所有警告消息:

stb_vorbis.o: CFLAGS += -w

或对于整个目录:

third_party/%.o: CFLAGS += -w

一般的经验法则是,如果您有两个或两个以上互斥的选项,gcc通常会选择后面的选项而不是前面的。

使用- issystem对我来说是可行的解决方案。

For example, instead of -IC:\boost_1_52_0, say -isystem C:\boost_1_52_0.

在下面的线程中详细描述:

你如何禁用未使用的变量警告出来的gcc在第三方代码我不希望编辑?

感谢@lee-duhem的友好和有用的建议。