QT中 No such file or directory 问题解决

在运行Qt程序时,有时候其他文件使用某个头文件可以运行,但是到自己这里调用某个头文件时就会报出 No such file or directory 问题。这个一般由于可能安装了多个Qt版本导致qmake调用错误,这个可以再Makefile文件中查看QMAKE变量确认程序使用的是哪个qmake。如果qmake版本没问题就要在Makefile文件中查看INCPATH       = -I../Qt5.3.1/5.3/gcc_64/mkspecs/linux-g++ -I. -I. -I../Qt5.3.1/5.3/gcc_64/include -I../Qt5.3.1/5.3/gcc_64/include/QtGui -I../Qt5.3.1/5.3/gcc_64/include/QtCore -I.比如我的错误是头文件QQmlApplicationEngine不能找到,该文件在../include/QtQml/QQmlApplicationEngine下,是不是在头文件添加QtQml/ QQmlApplicationEngine就好了,答案是否定的。因为同文件下也使用了QGuiApplication头文件,但是该文件在INCPATH中的路径../Qt5.3.1/5.3/gcc_64/include/QtGui是正确的。那么原因是什么呢?会不会是.pro文件?

      大家可以想下Makefile文件是如何生成的,是qmake根据.pro文件编译后产生的,了解这里之后,我在.pro文件中添加include(deployment.pri)  QT += qml quick quick-private,然后问题就解决了。


.pro文件中各变量意义:

HEADERS 指定工程的 C++头文件(.h)。
◆ SOURCES 指定工程的C++实现文件(.cpp)。
◆ FORMS 指定需要 uic 处理的由 Qt 设计师生成的.ui 文件。
◆ RESOURCES 指定需要 rcc 处理的.qrc 文件。
◆ DEFINES 指定预定义的 C++预处理符号。
◆ INCLUDEPATH 指定 C++编译器搜索全局头文件的路径。
◆ LIBS 指定工程要链接的库。库既可以通过绝对路径指定,也可以使用源自 Unix 的-L 和-l 标识符来指定(例如,-L/usr/local/lib 和-ldb_cxx)。
◆ CONFIG 指定各种用于工程配置和编译的参数。
◆ QT 指定所要使用的 Qt 模块(默认是 core gui,对应于 QtCore 和 QtGui 模块)。
◆ VERSION 指定目标库的版本号。
◆ TARGET 指定可执行文件或库的基本文件名,其中不包含任何的扩展、前缀或版本
号(默认的是当前的目录名)。
◆ DESTDIR 指定可执行文件放置的目录(默认值是平台相关的。
例如,在 Linux 上,指当前目录;在 Windows 上,则是指 debug 或 release 子目
录)。
◆ DLLDESTDIR 指定目标库文件放置的目录(默认路径与 DESTDIR 相同)。
CONFIG 变量用来控制编译过程中的各个方面。它支持下面这些参数:
◆ debug 是指具有调试信息的可执行文件或者库,链接 Qt 库的调试版。
◆ release 是指编译不具有调试信息的可执行文件或者库,链接发行版的 Qt 库。如果
同时指定 debug 和 release,则 debug 有效。
◆ warn_off 会关闭大量的警告。默认情况下,警告的状态是打开的。
◆ qt 是指应用程序或者库使用 Qt。这一选项是默认包括的。
◆ dll 是指动态编译库。
◆ staticlib 是指静态编译库。
◆ plugin 是指编译一个插件。插件总是动态库,因此这一参数暗含 dll 参数。
◆ console 是指应用程序需要写控制台(使用 cout、cerr、qWarning(),等等)。
◆ app_bundle 只适用于 Mac OS X 编译,是指可执行文件被放到束中,这是 Mac OS X
的默认情况。
◆ lib_bundle 只适用于 Mac OS X 编译,指库被放到框架中。

你可能感兴趣的:(QT)