【问题标题】:QT Creator fails to parse a very easy projectQT Creator 无法解析一个非常简单的项目
【发布时间】:2013-01-17 06:58:30
【问题描述】:

我在 QT creator 中创建了一个非常简单的项目,*.pro 文件如下:

HEADERS += inc\1.h
SOURCES += src\1.cpp

这里是源代码:

// 1.h
const int C = 1;

// 1.cpp
#include "1.h"

int main() {
    return C;
}

QT Creator 成功打开了这个“项目”,但无法解析它。 F2 对 C 常量不起作用,找不到 1.h 头文件。

请看描述问题的截图:

最奇怪的部分是完全相同的事情似乎在我的另一台安装了类似 QT SDK 5.0 的机器上工作!你能告诉我哪里错了吗?

【问题讨论】:

  • 应该是#include "inc/1.h"
  • 不,我希望它不应该。也许你的意思是“../inc/1.h” - 这有效,但我需要找到我的包含,而不需要它们的完整路径。如果我必须指定完整路径,为什么我需要 .pro 文件的“HEADERS”部分?
  • 将 inc 文件夹添加到 INCLUDE_PATH 也不起作用。最奇怪的部分是同一个项目在非常相似的其他机器上解析得很好。我在无法修改#include 指令的大型项目中遇到包含和语法解析问题,因此我创建了这个简单的示例来演示该问题。
  • 可能完全不相关,但我看到了这个错误,并且项目中没有显示任何源文件。在当前工具包(/usr/bin/qmake-qt5 对我来说)中为“Qt 版本”设置正确路径后,突然一切都出现了。

标签: c++ qt qt-creator projects-and-solutions


【解决方案1】:

HEADERS 应该列出你自己项目的头文件,就像SOURCES 列出源文件一样。

如果你想包含外部头文件,你应该将它们的文件夹添加到INCLUDEPATH

INCLUDEPATH += inc

以下 .pro 文件在 Qt Creator 2.5.0、Qt 4.6.1 中完美运行:

QT       += core
QT       -= gui

TARGET = test
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

SOURCES += \
    src/1.cpp

INCLUDEPATH += inc

试试那个确切的 .pro 文件,给它 3 秒解析并告诉我它是否有效。

【讨论】:

  • 我尝试了使用 INCLUDEPATH 的方法,但它在我的计算机上也不起作用。也许是最新QT中的某种奇怪的heisenbug,我不知道。我会尝试以前的 v4 SDK 并告诉你)
  • 你能编译吗?你是否也在另一台机器上使用 Qt Creator 2.6.1(它在哪里工作)?
  • 非常感谢您的建议,我尝试编译它但失败了,我意识到我的 QT“工具包”(不管它是什么)没有默认编译器。编译器绝对应该用于解析源代码,所以我认为这是根本原因。现在一切正常。
  • 我没有尝试编译项目,因为我只是想使用 Creator 来处理使用外部构建系统的大项目。
猜你喜欢
  • 2019-05-29
  • 2017-10-31
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2014-09-15
  • 1970-01-01
相关资源
最近更新 更多