Qt 5 最小构建笔记(只编译QtBase)

08/28 16:53
阅读数 25
-skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -skip qtconnectivity -skip qtdatavis3d -skip qtdeclarative -skip qtdoc -skip qtgamepad -skip qtgraphicaleffects -skip qtimageformats -skip qtlocation -skip qtmacextras -skip qtmultimedia -skip qtnetworkauth -skip qtpurchasing -skip qtquickcontrols -skip qtquickcontrols2 -skip qtremoteobjects -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsvg -skip qttools -skip qttranslations -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -skip qtxmlpatterns 

只想用Qt5最基本的功能,因此只编译QtBase。也不想为了编译一个Qt装很多东西
(比如非常肥的DirectX SDK)

软件清单:

Visual Studio 2010 Professional with SP1
Active Perl
git Win32

步骤:

0 设置环境
开Visual Studio Command Prompt
把perl和git都放在PATH里
检查显卡驱动是否支持OpenGL2.0以上
可以用这个工具:

https://sites.google.com/site/opengltutorialsbyaks/download/ex
tension-viewer

1 获取repository:
git clone https://git.gitorious.org/qt/qt5.git qt5

2 获取qtbase源代码:
这一步不需要init-repository,直接去
http://qt.gitorious.org/qt/qtbase打包代码并下载,
然后放在qtbase目录下。

--- configure.exe
|
-- qtbase
      |- bin
      |- examples 
      |- ...

3 configure

>configure -confirm-license -opensource -release -shared -fast 
-nomake examples -nomake demos -nomake tests -opengl desktop

4 make

>nmake module-qtbase
所用时间差不多是 Qt4.8 的1/3

5 check

把 qtbase/bin 添加到PATH里,编译一些examples
--

   最近编译出了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 directory
In 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库,只要单独编译就可以的。何乐而不为Qt4.7.4下单独编译QtWebkit

 

https://www.cnblogs.com/findumars/p/6375973.html

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部