我正在将代码从Qt4转移到Qt5,根据建议,我在.pro
文件中添加了以下行:as suggested:
我正在将代码从Qt4转移到Qt5。如建议所示,我在我的.pro
文件中添加了以下行:
QT += webkitwidgets
然而,当我运行qmake
时,我遇到了这个错误:
Project ERROR: Unknown module(s) in QT: webkitwidgets
我正在Ubuntu 12.04 LTS上进行开发,并按照说明安装了Qt。
我正在将代码从Qt4转移到Qt5,根据建议,我在.pro
文件中添加了以下行:as suggested:
我正在将代码从Qt4转移到Qt5。如建议所示,我在我的.pro
文件中添加了以下行:
QT += webkitwidgets
然而,当我运行qmake
时,我遇到了这个错误:
Project ERROR: Unknown module(s) in QT: webkitwidgets
我正在Ubuntu 12.04 LTS上进行开发,并按照说明安装了Qt。
您需要安装webkitwidgets库。
在Ubuntu上,请在终端中尝试以下操作:
sudo apt-get install libqt5webkit5-dev
在 Fedora 上,该软件包具有不同的名称,请尝试:
sudo apt-get install qt5-qtwebkit-devel
或者在 Fedora 上,通过 dnf 安装:
sudo dnf install qt5-qtwebkit-devel
2)下载所需工具:ActiveState Perl(二进制文件)、Python(二进制文件)、Ruby(二进制文件)、GnuWin Bison(二进制文件)、GPref(二进制文件)、Grep(二进制文件)、WinFlex、LibIconv、make(二进制文件)、sqlite(源代码!)、ICU(源代码)、windows msys(二进制文件)(带有工具的类Unix shell),mingw-w64(bin+dev)用于构建带有QtWebKit的Qt,请参见链接:https://trac.webkit.org/wiki/BuildingQtOnWindows
3)将ICU源代码下载到C:\icu\icu中。通过打开开始菜单(必须下载和安装msys),搜索或使用快速搜索来打开msys QT mingw控制台窗口。在打开的控制台中启动configure脚本,然后编译和安装:
$ cd C:\icu\icu\source
$ ./runConfigureICU
$ set PATH=%PATH%;C:\msys\1.0\bin\
$ make.exe
$ make.exe install
4)带有ICU支持的构建Qt(在configure中设置“-icu”),请参见下面的编译脚本。将路径更改为您的环境。
目录结构:
C:\Qt\Src\qtbase\compile.bat
set INCLUDE=C:\icu\icu\dist\include
set LIB=C:\icu\icu\dist\lib
set QTDIR=C:\Qt\5.7.0n
set PATH=%PATH%;C:\Qt\Qt5.7.0\5.7\mingw53_32\bin;C:\Qt\Qt5.7.0\Tools\QtCreator\bin;C:\Qt\Qt5.7.0\Tools\mingw530_32\bin;C:\Qt\Src\qtbase\bin;C:\Program Files (X86)\GnuWin32\bin;C:\winflex;C:\Ruby23-x64\bin;C:\Python27;C:\mingw-w64\i686-1\mingw32\bin;C:\icu\bin
set QMAKESPEC=win32-g++
set BUILD_DIR=C:\Qt\Qt5.7.0n
call C:\Qt\Src\qtbase\configure.bat -prefix %BUILD_DIR% -platform %QMAKESPEC% -confirm-license -debug-and-release -opensource -opengl desktop -no-compile-examples -icu -I C:/icu/icu/dist/include -L C:/icu/icu/dist/lib
jom.exe -j 4
pause
在Windows Power Shell中运行命令的示例:
$ cd C:\Qt\Src\qtbase
$ ./compile.bat
通过编译后,使用以下命令将文件安装到BUILD_DIR(安装Qt文件):
$ C:\mingw-w64\i686-1\mingw32\bin\mingw32-make.exe install
Qt应该开始安装了
5)下载Qtwebkit源代码到C:\Qt\Src\qtwebkit。使用下面的编译脚本使用新的Qt 5.7.0构建和C:\Qt\5.7.0n中的ICU编译qtwebkit。
C:\Qt\Src\qtwebkit\Tools\Scripts\compile.bat
set INCLUDE=C:\sqlite
set LIBS=C:\sqlite
set SQLITE3SRCDIR=C:\sqlite
set QTDIR=C:\Qt\Qt5.7.0n
set PATH=%PATH%;C:\Qt\Qt5.7.0n\bin;C:\Qt\Src\qtbase\bin;C:\winflex;C:\Ruby23-x64\bin;C:\Python27;C:\mingw-w64\i686-1\mingw32\bin;C:\icu\bin;C:\Program Files (x86)\GnuWin32\bin
set QMAKESPEC=win32-g++
call perl.exe .\build-webkit --qt --release
编译qtwebkit:
$ cd C:\Qt\Src\qtwebkit\Tools\Scripts
$ ./compile.bat
$ cd C:\Qt\Src\qtwebkit\WebKitBuild\Release
$ C:\mingw-w64\i686-1\mingw32\bin\mingw32-make.exe install
成功编译和安装后,应该可以使用qtwebkit编译您的应用程序。
构建静态QT
编辑文件C:\ Qt \ Src \ qtbase \ compile.bat并通过构建。
...
call C:\Qt\Src\qtbase\configure.bat -prefix %BUILD_DIR% -platform %QMAKESPEC% -confirm-license -debug-and-release -opensource -opengl desktop -static -no-compile-examples -icu
echo "QMAKE_FLAGS += -static -static-libgcc" >> .mkspecs/%QMAKESPEC%/qmake.conf
...
可能出现的错误
1)在构建qtwebkit时,"fatal error: unicode/uchar.h: No such file or directory"
请检查您的Qt 5.7.0n是否使用了ICU进行构建。在qtwebkit的配置中也会提示"需要ICU"。
2)flex:未知标志'-'。有关用法,请尝试
在这种情况下,您应该使用正确版本的Flex,即"win_flex"。您应该将文件重命名为使用win_flex而不是flex(和bison)。
1)将C:\Program Files (x86)\GnuWin32\bin\flex.exe重命名为一些未使用的名称。
2)将C:\Program Files (x86)\GnuWin32\bin\bison.exe重命名为一些未使用的名称。
3)将C:\winflex\win_bison.exe重命名为bison.exe。
3)在构建qtwebkit时,"fatal error: sqlite3.h: No such file or directory"
编辑文件C:\Qt\Src\qtwebkit\Tools\Scripts\compile.bat并检查sqlite的正确路径:
set SQLITE3SRCDIR=C:\(path to some SQLITE .h/source files)
4) skipping incompatible ... when searching for ...
您应该下载正确的库架构(32位或64位)。
5) View.cpp ... undefined reference to WKPageCanGoBack
当通过一些测试或MiniBrowser时可能会出现此问题。您可以在文件中搜索“UIProcess / API / qt”和“MiniBroswer”,并将其从Makefile和其他一些文件中删除,然后重新开始构建。
链接
构建Qt5:https://wiki.qt.io/Building_Qt_5_from_Git Qt WebKit构建
Alex提到的社区构建版本只适用于Qt 5.9之前的版本。
如果您想使用更新的Qt5(当前版本为5.11),那么另一种选择是将“QtWebKit”移植到“QtWebEngine”。
epel-release
,然后再安装qt5-qtwebkit-devel
。sudo dnf install epel-release
sudo dnf install qt5-qtwebkit-devel
我通过从之前的安装版本5.5中复制webkit和webkitwidgets pri文件,使其正常工作。
~/Qt/5.5/clang_64/mkspecs/modules/
对我有用的是两个答案的组合,我使用了@user1251007建议的方法+这个命令
sudo apt-get install libqt5websockets5-dev