如何配置QtCreator的Clang分析器,屏蔽第三方库宏警告?
解决QtCreator中Clang编辑器警告按来源过滤的问题
方法1:给第三方库路径标记为系统头文件(推荐)
这是最稳妥的方式,既能屏蔽第三方库的警告,又不影响自己代码的警告:
- 打开QtCreator的设置:
工具→选项→C++→代码模型→Clang诊断配置 - 选中当前在用的诊断配置(比如默认的
Clang Default),点击复制做一个自定义配置(别改默认配置,方便后续恢复) - 在自定义配置的
诊断选项里点添加,选择添加其他选项 - 输入参数:
-isystem "第三方库的绝对路径",比如Torch头文件路径就写-isystem "D:/libs/torch/include"- 原理:
-isystem会把指定路径标记成系统头文件,Clang默认会忽略系统头文件的这类警告,完美适配你的需求
- 原理:
- 保存配置后,在
代码模型页面的当前诊断配置里选你刚创建的自定义配置,重启QtCreator即可生效
方法2:精准屏蔽单个头文件的指定警告
如果只想针对c10/util/logging_is_not_google_glog.h这一个文件屏蔽警告,有两种方式:
全局配置方式
在自定义诊断配置里添加两个选项:
- 先加
-Wno-old-style-cast -Wno-discarded-qualifiers(指定要屏蔽的警告类型) - 再加
-isystem "D:/libs/torch/include/c10/util"(指定这个头文件所在的文件夹)
代码内临时屏蔽(局部生效)
不想改全局配置的话,在引用这个头文件的代码里添加:
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wold-style-cast" #pragma clang diagnostic ignored "-Wdiscarded-qualifiers" #include <c10/util/logging_is_not_google_glog.h> #pragma clang diagnostic pop
这样只在当前文件里屏蔽这个头文件的警告,其他地方不受影响
方法3:直接排除第三方库文件(不推荐)
要是你完全不需要QtCreator解析第三方库的代码(会丢失代码补全和跳转功能),可以这么操作:
- 打开项目的
项目面板,找到构建设置→C++→文件 - 在
排除的文件里添加第三方库路径,比如**/torch/include/** - 缺点是会丢失第三方库的代码补全和跳转能力,只适合极端场景
注意点
- 路径必须写绝对路径,Windows下把反斜杠改成正斜杠或者用双反斜杠,避免QtCreator识别失败
- 自定义配置一定要设为当前项目的默认诊断配置,否则不会生效
内容的提问来源于stack exchange,提问作者BIOStheZerg
相关产品推荐
相关产品推荐

