带有 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
值不正确,编辑器禁用了该条件下的所有代码。
环境:
- 软呢帽 29
- CMake 3.12
- 海湾合作委员会 8.3.1
- QtCreator 4.7.2 (Qt 5.11.3)
这是 QtCreator 和 CMake 项目的已知问题吗?是否有解决方法让 QtCreator 编辑器使用 CMake/GCC 提供的正确 __cplusplus
值解析代码?
QtCreator 4.7.2 似乎有一个关于 __cplusplus
被定义为 1
的错误。升级到 4.9.0 现在可以正确地将 __cplusplus
定义为 201703
(对于 C++17 Cmake 项目)。
将 #define __cplusplus 201103L
放入 .config 文件对我有用。
我在启用了 C++17 的 QtCreator 中使用了一个 CMake 项目。
我可以毫无问题地编译和使用 C++17 功能。当打印 __cplusplus
的值时,我得到 201703
,但是当我将鼠标悬停在 QtCreator 编辑器中的宏上时,它显示 1
的值。
因此,我没有得到任何 C++11(及更高版本)功能的代码完成或突出显示。这让处理起来很烦人。
标准 headers 例如 <memory>
有一堆检查,例如:
#if __cplusplus >= 201103L
// unique_ptr and shared_ptr
由于 __cplusplus
值不正确,编辑器禁用了该条件下的所有代码。
环境:
- 软呢帽 29
- CMake 3.12
- 海湾合作委员会 8.3.1
- QtCreator 4.7.2 (Qt 5.11.3)
这是 QtCreator 和 CMake 项目的已知问题吗?是否有解决方法让 QtCreator 编辑器使用 CMake/GCC 提供的正确 __cplusplus
值解析代码?
QtCreator 4.7.2 似乎有一个关于 __cplusplus
被定义为 1
的错误。升级到 4.9.0 现在可以正确地将 __cplusplus
定义为 201703
(对于 C++17 Cmake 项目)。
将 #define __cplusplus 201103L
放入