如何在 Qt Creator 中为 Clang 静态分析器设置语言标准(-std)

tra*_*arx 5 c cmake clang qt-creator clang-static-analyzer

我使用 QtCreator 作为 IDE 和 CMake 使用 CMake 编写我的项目进行构建。QtCreator 版本。>= 4.0.0 包含我尝试使用的 Clang 静态分析器。

在我的 CMakeLists.txt 集中:

set(CMAKE_C_FLAGS "-std=gnu99 ${CMAKE_C_FLAGS}")

当我在控制台中启动分析时出现错误:

error: invalid argument '-std=gnu++11' not allowed with 'C/ObjC'

如何将'-std=gnu99'传递给clang分析器?也许它是在 QtCreator 插件源中硬编码的?

UDP1:似乎是 QtCreator 的错误:https ://bugreports.qt.io/browse/QTCREATORBUG-16290

Pet*_*esh 3

变量CMAKE_C_FLAGS是用于C代码的,而不是用于C++代码的。您应该将其添加到CMAKE_CXX_FLAGS中。

set(CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}")
Run Code Online (Sandbox Code Playgroud)

要保留-std=gnu99C 代码,您需要添加:

set(CMAKE_C_FLAGS "-std=gnu99 ${CMAKE_C_FLAGS}") 
Run Code Online (Sandbox Code Playgroud)