【问题标题】:Qt Creator c++11 syntax highlighting for generic projects通用项目的 Qt Creator c++11 语法高亮显示
【发布时间】:2013-05-31 05:10:12
【问题描述】:

我的核心问题是,当使用 Qt Creator 作为“通用”(非 Qt)项目的代码编辑器时,我如何告诉它使用 c++11 语法高亮显示?

我有一个 c++11 项目,我已经做了一段时间了,我决定试试 Qt Creator。这是一个普通的 c++ 项目,带有手动编码的 makefile 等等。

Qt Creator 很好地打开了项目(“eSLIME”),并创建了三个文件:eSLIME.config、eSLIME.includes 和 eSLIME.files。它没有创建 .pro 文件。

似乎无法识别 c++11 调用。例如绿色下划线“#include <unordered_set>”,表示没有该文件或目录。

我怀疑我应该在 .config 文件中添加一些内容,但我不知道是什么,而且谷歌搜索没有帮助。我尝试附加 -std=c++0x,但没有成功。

PS:代码太烂,无法立即构建,这就是我切换到 IDE 的原因。

【问题讨论】:

  • 您是否尝试在您的 eSLIME.includes 文件中添加相应的目录?例如。 unordered_map 位于我系统上的 /usr/include/c++/4.4/ 中。这是要添加的路径,以便 QtCreator 解析它。
  • 成功了!谢谢。
  • 不过,让它在本地工作会很好,因为我倾向于使用不同版本的 C++ 跨平台工作。 :)
  • 只需将 Qt Creator 更新到最新版本

标签: c++ qt c++11 qt-creator


【解决方案1】:

从这个问题和答案过去了 2 年,但 Qt Creator 没有任何变化(至少对于 linux 而言):即使是最新版本(现在是 3.5)也无法解析 C++11 标头。

问题在于,默认情况下,内部 Qt Creator 解析器中的 __cplusplus 定义为小于 201103L 的某个值,在 STL 标头中有很多对该宏的检查,如下所示:

#if __cplusplus < 201103L
#include <bits/c++0x_warning.h>
// disable all tasty functionality
#endif

首先,我尝试在 *.config 中添加以下行:

#define __cplusplus 201103L

什么也没发生。

经过一番调查,我终于找到了合适的解决方案:只需在 *.config 中写入:

#define __cplusplus 201103

神奇地,一切都变得活跃了!

【讨论】:

  • 这个.config文件是QT生成的吗?
  • @BenJones 它通常由 Qt Creator 在您在那里创建项目时生成。我想它不是基于 CMake 或基于 Qbs 的项目。
【解决方案2】:

Qt 5.0.2 支持任何 c++ 文件的 c++11 语法然后

只需下载QT 5.0.2(包括 Qt Creator 2.7.0)。

【讨论】:

  • 谢谢你,Meysam 和 fasked!
猜你喜欢
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多