C++编译器标志忽略外部库的警告,但不包括目录
C++ compiler flag to ignore warnings for external libraries but without including directory
据我所知,有两种方法可以忽略外部库的警告。
第一种方法是使用#pragma
:
#pragma gcc diagnostic ignored "-Wunused-parameter"
第二种方法是将-isystem/path/to/system/lib
添加到编译器标志中。这会将特定的包含路径标记为外部包含路径,因此编译器不会发出源自这些包含的警告。
我有一个大型项目,有很多编译目标,其中一些使用特定的第三方库,这会给我的编译器带来问题。由于某些原因,我无法使用#pragma
选项。
但是,如果我使用-isystem
作为所有构建目标的一揽子编译器标志,那么不幸的是,我将为其他所有构建目标包括/path/to/system/lib
,即使是那些不使用该系统库的构建目标。这意味着其他目标将搜索这些外部库,这是不可取的。
是否有类似于-isystem
的编译器选项,可以以一揽子方式添加,不会添加到搜索路径中,但仅在路径恰好已包含在搜索路径中时排除警告?
我有一个大型项目,有许多编译目标,其中一些使用特定的第三方库,这会给我的编译器带来问题。由于某些原因,我无法使用
#pragma
选项。
你能详细说明一下吗?为什么带有#pragma GCC diagnostic
的包装标头不是一个选项?也就是说,类似这样的东西:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
#include </path/to/real/include.h>
#pragma GCC diagnostic pop
(或者,如果你想变得新奇,可以使用#include_next
。)你只会在跨越子系统边界时应用它;子系统本身将使用CCD_ 10进行编译。
我在GCC/libcpp源代码中看不到任何允许在不添加新系统头的情况下重置系统头标志的内容。在任何情况下,在我看来,这都是可以在构建系统中合理解决的问题。
相关文章:
- 为什么 cmake 许可证<>样式不包括?
- 计算平均值,不包括上次得分
- 将值从另一个数组写入数组,不包括不需要的值 C++
- 如果语句不包括文本行?
- 找到 x^n 的所有组合,并检查它们的总和是否等于一个不包括相同数字的数字
- 如何保证不包括 iostream?
- 创建一个循环,该循环将输出大于零且小于 60(不包括 60)的所有 5 的倍数
- C/C++ 经过的流程周期,不包括断点处
- 智能感知 PCH 警告不会消失
- [[maybe_unused]] 在成员变量上,GCC 警告(不正确?)该属性被忽略
- MSVC C6029 警告:缓冲区可能溢出,使用未经检查的值.检查缓冲区大小时,警告不会消失
- 编译器在 const ref 类型参数上使用临时对象时是否应该警告不安全的行为?
- 回文,不包括特殊字符和空格
- 查找 n 个数字的公因数数(不包括"1"作为公因数)
- 在 C++ 中的 SetClipboardData() 之后粘贴不包括记事本的换行符
- C++11 exit() 和 abs() 不包括 <cstdlib>?
- 生成生成 makefile 时不包括 cmake C++11 标志
- 警告:不能解析.gnu_debugdata部分;LZMA支持在编译时被禁用
- 寻找一种单一的定时方法来测试各种算法,不包括它们的输入
- C++编译器标志忽略外部库的警告,但不包括目录