为特定的文件/文件夹禁用-Wall标志
gcc disable -Wall flag for specific files/folders
我有一些开源库文件在我的项目(例如: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选项?
我不相信有任何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的友好和有用的建议。
相关文章:
- 即使使用调试编译标志,表达式也是"optimized out"
- 在 CMake 中为每个目标设置编译器/链接器标志
- File.cpp.o:OpenPose 标志 CMakeFiles/.. 的多重定义/main.cpp.o:首先在这里定
- 在轮班操作后使用携带标志
- 如何找出引入AVX标志的内容
- I2C 文件描述符上的 I2C 总线可写/可读标志
- C ++是否有C ++ 17 OSX 10.13.6的标志
- 每次使用带有LOCK_EX标志的LOCK_NB时,相同的程序/进程都会获取锁
- CMake 3.5 中的链接器标志位置
- 如何使用 gnu gcc 标志 -mpc32、-mpc64 和 -mpc80?
- 在 CMake 中添加全局编译标志
- -Wlifetime 标志的目的是什么?
- Visual Studio 19-17 库兼容性根据 GL 标志
- 标志 |= f == s[i],这个语句会做什么?
- Visual Studio 中是否有来自代码块的编译器标志的类似物?
- 如何在 clang 的自动会议中检查支持编译标志
- 使用 boost::p rogram_options 指定多个标志
- 如何告诉 gcc 显示您使用的优化标志列表
- 即使有 -Wall 标志,GCC 也不会发出警告
- 为特定的文件/文件夹禁用-Wall标志