Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ clang tidy找不到标准标题_C++_Cmake_Std_Clang Tidy - Fatal编程技术网

C++ clang tidy找不到标准标题

C++ clang tidy找不到标准标题,c++,cmake,std,clang-tidy,C++,Cmake,Std,Clang Tidy,我试图在我的项目中为一个子模块运行clangtidy,但它会为标准库抛出错误,例如找不到“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

我试图在我的项目中为一个子模块运行clangtidy,但它会为标准库抛出错误,例如找不到“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试用了一些东西并检查了所有东西

我尝试的是:

1)设置CGED 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
,结果相同:未找到错误“string”文件[clang diagnostic Error]

4) 试着把stdlib传给叮叮当当的tidy

set(DO_CLANG_TIDY "${CLANG_TIDY_EXE}" "-extra-arg=-stdlib==libc++")

但什么都不起作用。

“但什么都不起作用。”-它怎么不起作用?请告诉我们您得到的错误。否则,在这方面很难帮到你。好吧,1)什么都不做,我会遇到常见的“未定义引用”错误。2)的错误在代码下面,3)说:“找不到字符串”文件(以及更多的stdlib引用),4)说:错误:你的意思是“--stats=libc++”吗?如果你在问题中提供错误文本(并且格式正确),而不是在注释中,那会更好。至于4)-额外参数中有一个双等号。谢谢你的建议。去掉一个he等号不会改变任何事情。与之前一样,错误是:未找到“字符串”文件[clang diagnostic error],我用
--extra arg
解决了它。但是你在这个arg中有一个额外的空间,这可能会破坏它这个额外的arg?“但是没有任何效果。”-它怎么不起作用?请告诉我们您得到的错误。否则,在这方面很难帮到你。好吧,1)什么都不做,我会遇到常见的“未定义引用”错误。2)的错误在代码下面,3)说:“找不到字符串”文件(以及更多的stdlib引用),4)说:错误:你的意思是“--stats=libc++”吗?如果你在问题中提供错误文本(并且格式正确),而不是在注释中,那会更好。至于4)-额外参数中有一个双等号。谢谢你的建议。去掉一个he等号不会改变任何事情。与之前一样,错误是:未找到“字符串”文件[clang diagnostic error],我用
--extra arg
解决了它。但是你在这个arg中有一个额外的空间,这可能会破坏它这个额外的arg?