Android gcc禁用-特定文件/文件夹的墙标志

Android gcc禁用-特定文件/文件夹的墙标志,android,c++,c,gcc,makefile,Android,C++,C,Gcc,Makefile,我的项目中有一些开源库文件(例如:)-墙选项在我的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 警告

我的项目中有一些开源库文件(例如:)-墙选项在我的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选项

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

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

你可以这样做

CFLAGS:=$(filter-out -Wall, $(CFLAGS))
stb\u 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 $<
STB\u VOBIS\u CFLAGS:=$(过滤墙外,$(CFLAGS))
你的名字是什么。。。
$(CC)$(STB_VOBIS_CFLAGS)-o$@-c$<

尽管无法通过一个选项关闭
-Wall
,但您可以使用警告的
-Wno-*
关闭GCC中的特定警告。因此,例如,要抑制未使用变量警告,可以添加
-Wno unused variable
。有关不同警告选项的更多信息,请参阅

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

stb_vorbis.c: CFLAGS += -Wno-unused-variable
使用,您可以附加
-w
选项以禁止stb_vorbis.c文件的所有警告消息:

stb_vorbis.o: CFLAGS += -w
或对于整个目录:

third_party/%.o: CFLAGS += -w

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

我不明白您的意思。它是否仅排除stb_vorbis.c或将全部应用?对于所有源文件,我只有一个make文件。@gmuhammad您是否有make文件来编译来自
stb\u vorbis
的文件?如果你有一个,把调用放到那个Makefile中的
过滤掉_vorbis@gmuhammad不,不是单独的Makefile。只需在当前Makefile中为stb_vorbis.c添加一条新规则即可。使用-isystem有时也很有用,请参见: