微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 xutility、xstddef、... 被 clang-tidy 分析,尽管它们没有在构建中使用?

如何解决为什么 xutility、xstddef、... 被 clang-tidy 分析,尽管它们没有在构建中使用?

我正在使用 clang-tidy 整理一个项目,但我从项目中未包含的文件中收到错误消息。这些文件例如:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\xstddef
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\xutility

缩短的错误消息如下所示:

[build] Failed: CMakeFiles/Xchange.dir/src/CsvReader.cpp.obj 
[build] "C:\Program Files\CMake\bin\cmake.exe" -E __run_co_compile --tidy=clang-tidy;-checks=*,-llvm-*,-llvmlibc-*,-fuchsia-*,-modernize-use-trailing-return-type;--extra-arg-before=--driver-mode=g++ --source=../src/CsvReader.cpp -- C:\Qt\Tools\mingw810_64\bin\g++.exe -DLOGFILE_NAME=\"DwgImport.log\" -DWIN64 -D_WIN64 -D_WINDOWS -I../include -I_deps/geometry-src/include -I_deps/dwgimport-src/include -I../include/windows -I../src -I../src/Dwg -I../src/List -I_deps/mongoc-build/src/libmongoc/src -I_deps/mongoc-build/src/libmongoc/src/mongoc -I_deps/mongoc-src/src/libmongoc/src -I_deps/mongoc-src/src/libmongoc/src/mongoc -I_deps/mongoc-src/src/libmongoc/../../src/common -I_deps/mongoc-build/src/libmongoc/../../src -I_deps/mongoc-build/src/libmongoc/../../src/common -I_deps/mongoc-build/src/libbson/src -I_deps/mongoc-build/src/libbson/src/bson -I_deps/mongoc-src/src/libbson/src -I_deps/mongoc-src/src/libbson/src/bson -I_deps/mongoc-src/src/libbson/../../src/common -I_deps/mongoc-build/src/libbson/../../src -I_deps/mongoc-build/src/libbson/../../src/common -g -std=gnu++11 -MD -MT CMakeFiles/Xchange.dir/src/CsvReader.cpp.obj -MF CMakeFiles\Xchange.dir\src\CsvReader.cpp.obj.d -o CMakeFiles/Xchange.dir/src/CsvReader.cpp.obj -c ../src/CsvReader.cpp
[build] error: too many errors emitted,stopping Now [clang-diagnostic-error]
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\xstddef:285:22: error: 'auto' return without trailing return type; deduced return types are a C++14 extension [clang-diagnostic-error]
[build] _NOdisCARD constexpr auto _Unfancy(_Ptrty _Ptr) noexcept { // converts from a fancy pointer to a plain pointer
[build]                      ^
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\xutility:196:15: error: deduced return types are a C++14 extension [clang-diagnostic-error]
[build]     constexpr decltype(auto) operator()(_Args&&... _Vals) { // forward function call operator
[build]               ^
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\xutility:1264:16: error: constexpr function's return type 'void' is not a literal type [clang-diagnostic-error]
[build] constexpr void _Adl_verify_range(const _Iter& _First,const _Sentinel& _Last) {
[build]                ^
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\xutility:1300:22: error: deduced return types are a C++14 extension [clang-diagnostic-error]
[build] _NOdisCARD constexpr decltype(auto) _Get_unwrapped(_Iter&& _It) {
[build]                      ^
[build] C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\xutility:1347:22: error: deduced return types are a C++14 extension [clang-diagnostic-error]
[build] _NOdisCARD constexpr decltype(auto) _Get_unwrapped_unverified(_Iter&& _It) {
[build]                      ^

…

这是构建环境的详细信息:

  • Win 10 64 位
  • MinGW
  • 海湾合作委员会 8.1.0
  • CMake 3.18.4
  • clang 11.0.0
  • CMake
    • clang-tidy 变量:set(CMAKE_CXX_CLANG_TIDY clang-tidy "-checks=*,-modernize-use-trailing-return-type")
    • 通过 set(CMAKE_CXX_STANDARD 11) 使用 C++11

显然 xstddefxutility 中的某些内容与 C++11 不兼容。但是我没有在我的构建中的任何地方包含这些文件clang-tidy 似乎出于某种原因将它们拉进来进行分析。

在使用 MinGW/GCC 的项目中不能正确使用 clang-tidy 吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。