使用 CMake 在 Qt Creator 4.0 Clang 静态分析器中启用 C++14

Enable C++14 in Qt Creator 4.0 Clang Static Analyzer using CMake

我在我的项目中使用了 Clang 3.8 的一些 C++14 特性。构建系统是 CMake,所以我 运行 clang 静态分析是这样的:

$ scan-build cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_COMPILER=clang \
/path/to/source
$ scan-build make

这种方式构建和分析工作得很好,但我也想通过 GUI 集成从 Qt Creator 使用它。当我按 Analyze -> Clang Static Analyzer 时,clang 在使用 C++14 功能的第一个文件上停止,错误代码为非零,错误如下:

error: <a_cool_c++14_feature> is a C++14 extension

我加了

set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED TRUE)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

到我最顶层的 CMakeLists.txt,但它没有用。我还尝试使用 set_property 命令为所有目标设置 CXX_STANDARD,但我在 Qt Creator 中得到了相同的结果,而从控制台手动构建效果很好。

如何从 Qt Creator GUI 在 Clang 静态分析器中使用 C++14?

尝试在选项 > C++ > 代码模型中添加 -std=c++14

我的是这样的:

-Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-unused-macros -Wno-newline-eof -Wno-exit-time-destructors -Wno-global-constructors -Wno-gnu-zero-variadic-macro-arguments -Wno-documentation -Wno-shadow -Wno-missing-prototypes -Wsuggest-override -std=c++14

注意: 您必须重新打开每个文件才能生效。 如果你不能编辑它,你必须先启用插件"Code model" (help > about plugins...) 然后重启QtCreator

对我有帮助的是 CMakeLists.txt

中的以下行
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 14)