我正试图将我的项目从一台带有qt4
的计算机转移到另一台新安装qt5
的计算机,但我遇到了一个非常奇怪的问题。
qmake突然找不到我的任何源文件或头文件
这里有一个极简主义的例子:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = untitled
TEMPLATE = app
SOURCES += main.cpp
mainwindow.cpp
INCLUDEPATH += $$PWD/Dir/
DEPENDPATH += $$PWD/Dir/
HEADERS += mainwindow.h
f.h
FORMS += mainwindow.ui
其中Dir/f.h
与untitled.pro
存在于同一目录中。我从qmake:得到这个输出
05:18:45: Starting: "/opt/QtSDK/5.0.2/gcc/bin/qmake"
/home/martin/Projects/untitled/untitled.pro
-r -spec linux-g++ CONFIG+=debug CONFIG+=declarative_debug CONFIG+=qml_debug
WARNING: Failure to find: f.h
05:18:45: The process "/opt/QtSDK/5.0.2/gcc/bin/qmake" exited normally.
我完全不知道是什么原因造成的。可能是什么问题?
编辑:
当我手动准备这样的名称:
HEADERS += Dir/f.h
qmake
没有抱怨。
当我在专业文件中包含VPATH时,解决了相同的问题
例如:VPATH+=..//库/INCLUDE+=..//图书馆/
此外,对于qt 5,我们不需要在专业文件中包含DEPENDPATH
您从未定义过PWD。双美元符号"$$"前缀表示前面在专业文件中定义的qmake变量。在您的情况下,$$PWD
部分是完全不必要的。如果您完全删除它,那么一切都应该编译得很好。
编辑:此外,他们在Qt 5中悄悄地改变了DEPENDPATH
的行为。从Qt 5开始,qmake
现在在查找SOURCES
和HEADERS
(config += depend_includepath
)时默认使用INCLUDEPATH
。只要放下DEPENDPATH
线,你就应该表现得很好。
INCLUDEPATH += "Dir"
参考:.pr文件中的Qmake变量