qmake生成的Makefile中缺少QtWebKit依赖项

Nic*_*ick 4 c++ qt qmake makefile file-inclusion

我刚开始使用Qt(用C++编写),所以我按照我在网上找到的"你好,世界"的例子.我在目录hello中创建了程序hello.cpp:

#include <QtGui>

int main(int argc, char *argv[]) {
    QApplication app (argc, argv);
    QLabel label ("Hello, world!");
    label.show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我跑了:

qmake -project
qmake hello.pro
make
Run Code Online (Sandbox Code Playgroud)

一切都正确编译,我能够运行./hello.然后,作为一个冒险的人,我尝试修改文件:

#include <QtGui>
#include <QtWebKit>

int main(int argc, char *argv[]) {
    QApplication app (argc, argv);
    QLabel label ("Hello, world!");
    QWebPage page;
    label.show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

我重申了这三个命令,但现在当我运行make时,我收到以下错误:

hello.cpp:2: fatal error: QtWebKit: No such file or directory
compilation terminated.
make: *** [hello.o] Error 1
Run Code Online (Sandbox Code Playgroud)

我检查了Makefile,并将INCPATH变量定义为

INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I.
Run Code Online (Sandbox Code Playgroud)

它显然缺少-I/usr/include/qt4/QtWebKit.LIBS变量也缺少-lQtWebKit.手动添加这些会导致编译成功.我究竟做错了什么?我需要添加什么才能使qmake生成正确的Makefile?

Mat*_*Mat 8

你需要添加:

QT += webkit
Run Code Online (Sandbox Code Playgroud)

到你的.pro文件,并重新运行qmake.

qmake -project 并不试图猜测代码中需要哪些模块.

如果您有多个模块,通常的语法如下:

QT += webkit xml network
Run Code Online (Sandbox Code Playgroud)