qt编译ui(Qt4.7.4下单独编译QtWebkit)
最近编译出了Qt4.7.4的嵌入式版本 ,但没有编译QtWebkit库 。在编译一个使用Webkit的工程时出错 ,而根据工程的需要 ,要单独编译QtWebkit库 。
由于不想再次编译整个的Qt库 ,于是进行了下面的尝试 ,发现单独编译QtWebkit还是简单的 ,当然其它模块也是一样的 。
具体过程如下:
1.在qt源码包的顶层运行configure配置:
------------------------------------------
./configure -opensource -confirm-license -release
\-prefix /usr/local/arm/qte4.7.4 \
-webkit -qt-zlib -no-script \
-xplatform qws/linux-arm-gnueabi-g++ -embedded armv6 \
-qt-kbd-linuxinput -qt-mouse-linuxinput -plugin-gfx-linuxfb \
-nomake demos -nomake examples -nomake tools -fast \
-L /usr/local/arm/lib -I /usr/local/arm/include
-----------------------------------------------------------
2.生成QtWebKit模块的Makefile文件
进入QtWebKit源码所在的目录./src/3rdparty/webkit.如果在目录中执行make会出错 ,主要是qmake找不到 ,因为在这时的Makefile文件中 ,使用的是固定路径的qmake.
使用以下命令重生成Makefile文件 ,当然后面的spec路径要根据实际情形设置
qmake
WebKit.pro -r -spec
/usr/local/arm/qte4.7.4/mkspecs/qws/linux-arm-gnueabi-g++3.编译
make编译过程中仍出现错误:
-----------------------------------------------------------------------------------------
......
正在进入目录
`/home/dragon/project/qte4.7.4/src/3rdparty/webkit/WebKit/qt/tests/qwebframe
然后一堆类似这样的错误
../../Api/qwebframe.cpp:21:20: error: config.h: No such file or
directory../../Api/qwebframe.cpp:24:20: error: Bridge.h: No such file or
directory../../Api/qwebframe.cpp:25:23: error: CallFrame.h: No such file or
directory../../Api/qwebframe.cpp:26:22: error: Document.h: No such file or
directory../../Api/qwebframe.cpp:27:28: error: DocumentLoader.h: No such
file or directory
......-----------------------------------------------------------------------------------------
看来忘加
-nomake
test 选项了 ,但幸好QtWebKit库己编译出来 ,就不去处理这些错误了 。后来经过试验,加上-nomake
test编译就不会出现错误了 。4.安装
make
install再到安装目录中检查 ,libQtWebKit.so.4.7.4库己经安装
5.测试
使用现在的QtEmbedded来编译一个使用QtWebKit的工程browser,在make过程中出错:------------------------------------------------------------------------------------------
In file included from
/usr/local/arm/qte4.7.4/include/QtWebKit/QWebFrame:1,from browsermainwindow.cpp:70:
/usr/local/arm/qte4.7.4/include/QtWebKit/qwebframe.h:28:36: error:
QtScript/qscriptengine.h: No such file or directoryIn file included from
/usr/local/arm/qte4.7.4/include/QtWebKit/QWebFrame:1,from
browsermainwindow.cpp:70:
------------------------------------------------------------------------------------------看来QtWebKit依赖QtScript ,只好再编译QtScript 。
下面是单独编译QtScript模块的过程
这次confiugre的参数配置如下:
------------------------------------------------------------
./configure -opensource -confirm-license -release
\-prefix /usr/local/arm/qte4.7.4 \
-webkit -qt-zlib \
-xplatform qws/linux-arm-gnueabi-g++ -embedded armv6 \
-qt-kbd-linuxinput -qt-mouse-linuxinput -plugin-gfx-linuxfb \
-nomake demos -nomake examples -nomake tools -nomake test -fast
\-L /usr/local/arm/lib -I /usr/local/arm/include
------------------------------------------------------------
与上次配置不同的是去掉了-no-script选项,增加了-nomake test选项
然后进入./src/script目录
qmake
script.pro -r -spec
/usr/local/arm/qte4.7.4/mkspecs/qws/linux-arm-gnueabi-g++make
make
install现在再次编译browser工程 ,终于顺利地单独编译出QtWebKit库 。并使用一个工程进行了测试 ,一切都正常 。
从上面的过程可以看出,Qt库的许多模块可以单独编译的
。只要先使用configure配置选上需要的模块,注意带上-fast选项和适当的-nomake选项;然后进到相应的模块源码目录中,使用qmake重新生成对应的Makfile文件;在此目录make 、make
install 。如此这般就完成了Qt模块的单独编译.有人可能会问 ,为什么要单独编译 。当然可以一次就搞定所有模块 ,不过交叉编译往往由于各种原因 ,某些模块编译通不过 ,有时有些模块肯定用不到 ,总有一些原因造成Qt的模块编译不完整 。在这时 ,不需要再次编译所有的Qt库 ,只要单独编译就可以的。何乐而不为
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!