我的项目中有一些开源库文件(例如: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选项?
答案 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通常会比以前的选项采用更晚的选项。