【发布时间】:2017-12-07 23:33:33
【问题描述】:
我们将 PVS Studio(开源项目的免费变体)与 travis-ci 结合使用,由于某种原因,它会为位于 /usr/local/clang-3.5.0/lib/clang/3.5.0/include 的文件产生错误:
这个位置看起来像是非标准编译器的“系统”头文件示例,并且远离项目根目录(AFAIR 位于 /home: 标准 travis 位置)。脚本运行使用来自https://www.viva64.com/en/pvs-studio-download-linux/ 的最新版本,最新运行时间为“Mon Jul 3 20:13:42 UTC 2017”(不幸的是,未保存使用的版本)。
【问题讨论】:
-
显然这些类型被声明了两次,编译器只认为其中一个位置是实际的库。该自定义库和 clang 标准库之间可能存在某种库冲突。
-
您是使用
/usr/local/clang-3.5.0/bin/clang还是使用其他编译器编译您的项目?如果你不使用这个非系统clang我怀疑某种CFLAGS污染。执行构建的用户的env命令是否包含CFLAGS? -
“如何摆脱……” - 分别使用标准标题。按预期使用它们。
-
@tgregory 据我所知,CC 只是 clang(然后 CMake 扩展为 /usr/local/clang-3.5.0/bin/clang),而 CFLAGS 只是
-O0。 -
PVS 对 Clang 使用它的内置标头(在常见问题解答中提到)不满意。因此,将
-nobuiltininc添加到CFLAGS应该使Clang使用系统头文件并忽略内置头文件。您可以尝试将-v添加到CFLAGS以检查它在哪里寻找标题。
标签: pvs-studio