clang-tidy找不到标准标头

时间:2020-03-19 10:21:04

标签: c++ cmake std clang-tidy

我试图在我的项目中为子模块运行clang-tidy,但是它为标准库抛出错误,例如找不到“ string”文件或与“ cmath”相同。在Windows下使用Qt Creator和MinGW进行开发。

这是我的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指向clang-tidy。错误:-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++")

但没有任何效果。

0 个答案:

没有答案