C++ 使用CMake的QtCreator,在编辑器中错误地解析了uu cplusplus值

C++ 使用CMake的QtCreator,在编辑器中错误地解析了uu cplusplus值,c++,gcc,cmake,qt-creator,fedora,C++,Gcc,Cmake,Qt Creator,Fedora,我有一个CMake项目正在QtCreator中使用,启用了C++17 我可以毫无问题地编译和使用C++17功能。打印\uuu cplusplus的值时,我得到201703,但当我将鼠标悬停在QtCreator编辑器中的宏上时,它会显示1的值 因此,我没有得到任何C++11(及更高版本)特性的代码完成或突出显示。这使得处理这些问题很烦人 标准标题,如有一系列检查,如: #if __cplusplus >= 201103L // unique_ptr and shared_ptr 由于\uu

我有一个CMake项目正在QtCreator中使用,启用了C++17

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

因此,我没有得到任何C++11(及更高版本)特性的代码完成或突出显示。这使得处理这些问题很烦人

标准标题,如
有一系列检查,如:

#if __cplusplus >= 201103L
// unique_ptr and shared_ptr
由于
\uu cplusplus
值不正确,编辑器将禁用该条件下的所有代码

环境:

  • 软呢帽29
  • CMake 3.12
  • 通用条款8.3.1
  • QT4.7.2(Qt 5.11.3)

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

似乎QtCreator 4.7.2在
\uuCPlusplus
被定义为
1
方面存在缺陷。升级到4.9.0后,现在正确地将
\uu cplusplus
定义为
201703
(对于C++17 Cmake项目)。

有趣的是,在我的系统上,QtCreator(4.9.0)在鼠标悬停在该宏上时不会展开该宏,但条件正确。您是否通过右键单击-->查找对光标下的符号的引用来检查宏的定义位置以及在这种情况下宏的值?通过执行“查找用法”,它会在
文件下显示:
\define\u cplusplus 1
。我试图单击该文件,但出现一个错误,说明该文件可能不存在或我没有打开它的权限。我找到了用于QtCreator代码模型检查的tmp文件:tmp/QtCreator bhGcmE/qtc-codemodelinspection_190502_165446.txt:
2017969:第3行:#define u cplusplus 1
它被归类为未定义的宏。