gcc disable - 特定文件/文件夹的标志

时间:2014-03-18 07:31:15

标签: android c++ c gcc makefile

我的项目中有一些开源库文件(例如:http://nothings.org/stb_vorbis/stb_vorbis.c)。 -Wall选项在我的Android.mk文件中启用。在编译期间,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选项?

3 个答案:

答案 0 :(得分:5)

  

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

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

您可以执行类似

的操作
CFLAGS:=$(filter-out -Wall, $(CFLAGS))
如果stb_vorbis支持make功能,请在filter-out的Makefile中

此外,您可以为stb_vorbis.c编写特定规则:

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

使用target-specific variables,您可以附加-w选项以禁止stb_vorbis.c文件的所有警告消息:

stb_vorbis.o: CFLAGS += -w

或整个目录:

third_party/%.o: CFLAGS += -w

一般的经验法则是,如果您有两个或更多互斥选项,gcc通常会比以前的选项采用更晚的选项。