带有 CMake 的 QtCreator,在编辑器中错误地解析了 __cplusplus 值

QtCreator with CMake, Incorrectly parsed __cplusplus value in editor

我在启用了 C++17 的 QtCreator 中使用了一个 CMake 项目。

我可以毫无问题地编译和使用 C++17 功能。当打印 __cplusplus 的值时,我得到 201703,但是当我将鼠标悬停在 QtCreator 编辑器中的宏上时,它显示 1 的值。

因此,我没有得到任何 C++11(及更高版本)功能的代码完成或突出显示。这让处理起来很烦人。

标准 headers 例如 <memory> 有一堆检查,例如:

#if __cplusplus >= 201103L
// unique_ptr and shared_ptr

由于 __cplusplus 值不正确,编辑器禁用了该条件下的所有代码。

环境:

这是 QtCreator 和 CMake 项目的已知问题吗?是否有解决方法让 QtCreator 编辑器使用 CMake/GCC 提供的正确 __cplusplus 值解析代码?

QtCreator 4.7.2 似乎有一个关于 __cplusplus 被定义为 1 的错误。升级到 4.9.0 现在可以正确地将 __cplusplus 定义为 201703(对于 C++17 Cmake 项目)。

#define __cplusplus 201103L 放入 .config 文件对我有用。