c++ - clang-tidy 找不到标准标题
问题描述
我正在尝试在我的项目中为子模块运行 clang-tidy,但它会为标准库引发错误,例如找不到“字符串”文件或“cmath”相同。使用 Qt Creator 和 MinGW 在 Windows 下进行开发。
这是我的 Cmake 文件
option(RUN_CLANG_TIDY "Run clang-tidy with the compiler." ON)
if(RUN_CLANG_TIDY)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "CMake_RUN_CLANG_TIDY requires an out-of-source build!")
endif()
file(GLOB CLION_PATH
"C:/Program Files/JetBrains/CLion*/bin/clang/win"
)
find_program(CLANG_TIDY_EXE NAMES clang-tidy
HINTS
"C:/Program Files/LLVM/bin"
"C:/Qt/Tools/QtCreator/bin/clang/bin"
"${CLION_PATH}"
)
if(NOT CLANG_TIDY_EXE)
message(WARNING "CMake_RUN_CLANG_TIDY is ON but clang-tidy is not found!")
set(CMAKE_CXX_CLANG_TIDY "" CACHE STRING "" FORCE)
else()
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}")
message("-- Clang-tidy found: ${DO_CLANG_TIDY}")
endif()
endif()
...
add_library(...)
if(DO_CLANG_TIDY)
set_target_properties(${PROJECT_NAME} PROPERTIES
CXX_CLANG_TIDY "${DO_CLANG_TIDY}"
)
endif()
target_include_directories(...)
我已经尝试了一些东西并在stackoverflow中检查了clang-tidy标签下的所有内容。
我尝试了什么:
1)通过设置Cmake C++包含路径
set(CPLUS_INCLUDE_PATH C:/Qt/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++)
2)生成compile_commands.json
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
...
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-p C:/Users/User04/Documents/Projekte/build-my-project-Desktop_Qt_5_12_6_MinGW_64_bit-Debug")
并用 -p 指向它。错误:对于 -p 选项:可能不会出现在组内
3)使用 -extra-arg 参数,如
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-extra-arg=-I C:/Qt/Tools/mingw730_64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++")
也不是-I
我尝试-isystem
了相同的结果:找不到错误“字符串”文件[clang-diagnostic-error]
4) 试图将 stdlib 传递给 clang-tidy
set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-extra-arg=-stdlib==libc++")
但没有任何效果。
解决方案
推荐阅读
- php - 使用 php 脚本运行时,带有 where 子句的 oracle 选择查询返回不完整的记录
- python-tesseract - PyTesseract - 安装问题
- xcode - Xcode 11.3.1 未在调试器中显示 NSObject 子类成员
- c# - Unity检查矩形作品的重叠,除非在gridlayoutgroup中
- prolog - 撤回/1定义中的短语不清楚
- javascript - 困惑为什么反应组件不从数据呈现
- c++ - c++ 使用类对象作为类成员
- c++ - 在 VSCode 中调试 C++ 期间将输入传递给 std::cin 的问题
- oracle - 如何将查询结果保存在 plsql 的变量中
- google-chrome-extension - 是否始终为 tabs.onCreated(function(tab){}) 定义pendingURL?