QtEmbedded开发介绍之配置参数篇上
QtEmbedded开发介绍之配置参数篇上本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。 原文链接: http://www.cuteqt.com/blog/?p=582经常有人会在BBS和QQ群上大喊:怎么裁剪Qt,怎么安装那么困难啊。 每当我看见时,都是非常无奈,其实Qt有套良好的配置安装机制,跟大多数linux程序一样,典型的先configure,然后make,最后 make install三部曲。而如果要裁剪参数,其实可以在configure加上对应的参数来实现,通过合理的选择,完全可以做到满足项目的开发。对于嵌入式 开发来说,资源是极其重要的,这就要求我们应该对应不同的项目开发,对Qte进行不同的裁剪来实现。 其实,在前面的减少Qt编译时间暨简单Qt裁剪 已经对这个题目有了非常详细的概述,并且通过qconfig工具可以做到控件级的裁剪,但是如果能在 configure阶段,能搞清楚参数,我想对于开发也是有很大的帮助。 为了与时俱进,本人的例子都是参照qt-embedded-linux-opensource-src-4.5.x系列。 当进入解压好的源码包后,使用./configure –help命令,可以获得相应帮助,那我们只要选取参数部分看看就OK Configure options: The defaults (*) are usually acceptable. A plus (+) denotes a default value * -release ……….. Compile and link Qt with debugging turned off. -developer-build…. Compile and link Qt with Qt developer options (including auto-tests exporting) -opensource……… Compile and link the Open-Source Edition of Qt. * -shared ………… Create and use shared Qt libraries. * -no-fast ……….. Configure Qt normally by generating Makefiles for all -no-largefile …… Disables large file support. * -no-exceptions ….. Disable exceptions on compilers that support it. -no-accessibility .. Do not compile Accessibility support. -no-stl ………… Do not compile STL support. -no-sql-<driver> … Disable SQL <driver> entirely. Possible values for <driver>: -system-sqlite ….. Use sqlite from the operating system. -no-qt3support ….. Disables the Qt 3 support functionality. -no-xmlpatterns …. Do not build the QtXmlPatterns module. -no-phonon ……… Do not build the Phonon module. -no-svg ………… Do not build the SVG module. -no-webkit ……… Do not build the WebKit module. -no-scripttools …. Do not build the QtScriptTools module. -platform target … The operating system and compiler you are building See the README file for a list of supported -no-mmx ………… Do not compile with use of MMX instructions. -qtnamespace <name> Wraps all Qt library code in ‘namespace <name> {…}’. -D <string> …….. Add an explicit define to the preprocessor. -help,-h ………. Display this information. Third Party Libraries: -qt-zlib ……….. Use the zlib bundled with Qt. -no-gif ………… Do not compile the plugin for GIF reading support. -no-libtiff …….. Do not compile the plugin for TIFF support. -no-libpng ……… Do not compile in PNG support. -no-libmng ……… Do not compile the plugin for MNG support. -no-libjpeg …….. Do not compile the plugin for JPEG support. -no-openssl …….. Do not compile support for OpenSSL. -ptmalloc ………. Override the system memory allocator with ptmalloc. Additional options: -make <part> ……. Add part to the list of parts to be built at make time. -R <string> …….. Add an explicit runtime library path to the Qt -no-rpath ………. Do not use the library install path as a runtime -continue ………. Continue as far as possible if an error occurs. -verbose,-v ……. Print verbose information about each step of the -silent ………… Reduce the build output so that warnings and errors * -no-optimized-qmake … Do not build qmake optimized. -no-nis ………… Do not compile NIS support. -no-cups ……….. Do not compile CUPS support. -no-iconv ………. Do not compile support for iconv(3). -no-pch ………… Do not use precompiled header support. -no-dbus ……….. Do not compile the QtDBus module. -reduce-relocations ….. Reduce relocations in the libraries through extra -no-separate-debug-info . Do not store debug information in a separate file. Qt for Embedded Linux only: -xplatform target … The target platform when cross-compiling. -no-feature-<feature> Do not compile in <feature>. -embedded <arch> …. This will enable the embedded build,you must have a -armfpa …………. Target platform is uses the ARM-FPA floating point format. The floating point format is usually autodetected by configure. Use this -little-endian …… Target platform is little endian (LSB first). -host-little-endian . Host platform is little endian (LSB first). You only need to specify the endianness when -no-freetype …….. Do not compile in Freetype2 support. -qconfig local …… Use src/corelib/global/qconfig-local.h rather than the -depths <list> …… Comma-separated list of supported bit-per-pixel -qt-decoration-<style> ….Enable a decoration <style> in the QtGui library, -no-opengl ………. Do not support OpenGL. NOTE: A QGLScreen driver for the hardware is required to support -qt-gfx-<driver> … Enable a graphics <driver> in the QtGui library. -qt-kbd-<driver> … Enable a keyboard <driver> in the QtGui library. -plugin-kbd-<driver> Enable keyboard <driver> as a plugin to be linked to -no-kbd-<driver> … Disable keyboard <driver> entirely. -qt-mouse-<driver> … Enable a mouse <driver> in the QtGui library. -iwmmxt ………… Compile using the iWMMXt instruction set -no-glib ……….. Do not compile Glib support. 我们可以发现,有的参数前面有*号,这就意味这如果我们什么也不做,直接配置编译的话,就会把这些参数默认进去。不过,如果什么也不做,那裁剪也无从说起了。为了便于分析,接下来,我就是以如下格式进行: 参数 解释。 -release 这个参数显而易见,就是编译Qt以发布版的模式进行,一般来说,最后系统完成后,库就应该是发布版。 -release 与上面对应,自然是调试版了,如果开发的话,可以选择它吧。 -debug-and-release 囧,上面那两个的儿子。 -developer-build 囧,我错了,开发者也可以用这个的,选了这个后,可以进行自动测试,不过还没去用过,以后可以研究研究。 -opensource -commercial 这两个参数是指是编译是商业版本的,还是开源版本呢,视个人情况而定。 -shared -static 这两个参数是指Qt的lib以动态还是静态编译生成,这自然也是视个人需要的。 -no-fast -fast 这两个就很有关系,如果对自己的电脑性能很有信心,那就选第一个,那所有的工程文件都会生成到makefiles中,那编译的时间,估计可以看完变形金刚了。如果选第二个,那就加入子目录和库到makefiles,这样就能加快编译的速度。 -no-largefile -largefile 顾名思义,支不支持大文件,一般来说,嵌入式里是不会有从超过4G的大文件的,那就选第一个吧。 -no-exceptions -exceptions 计算机英语够好的人都该懂,这个自然就是异常情况,选则编译器支持抛出异常,否则不支持。 -no-accessibility -accessibility 可访问性的支持,说实话,这个我真不知道有什么有用了。等哪天发现了,再来好好解释。 -no-stl -stl 是都加入stl的支持,stl,这应该算是C++程序员应该都了解了,再不济,那也总听说过大名吧。 no-sql-<driver> 这个可要好好说明下,一般来说,对于一个优秀的项目开发,数据库是必不可少的,qt也自带了大多数数据库驱动,可以完美地支持数据库的使用。对于数 据库的使用,我们可以直接qt驱动编译进去,或者以插件的形式编译进去。一般来说,最简单地就是直接编译进去,但使用插件形式的可以更加灵活,针对不同的 需求将驱动插件添加。其中,<>代表的是驱动名,如果我想直接添加sqlite的支持话,形式如下:-qt-sql-sqlite。其他名称 可以自己查看参数里,有详细地介绍。 -system-sqlite sqlite真受欢迎啊,当然那么优秀的嵌入式数据库,本人也是基本使用它来进行开发。这个参数意思是使用操作系统上的sqlite数据库,如果是不太会移植的,可以考虑直接使用qt自带的驱动。 -no-qt3support -qt3support 这个也是简洁易懂,加不加对qt3的支持。 no-xmlpatterns -xmlpatterns 选择对xml的支持,如果对网络无需求的话,就不用加了。 -no-phonon -phonon phonon是qt中处理多媒体的模块,比如放放视频什么来着,不过本人从没用过,也是根据需要选择的。 -no-phonon-backend -no-svg -svg 是否加入svg的支持,svg即可缩放矢量图形。 -no-webkit -webkit 是否加入webkit的支持,这可是个好东西,不过如果跟网络不搭界的话,还是不支持吧。 -no-scripttools -scripttools 是否加入脚本工具的支持,这对php等脚本工程师来说是个很棒的参数,但对于我这样菜鸟,就别提了。 -platform target 目标平台,这可是关键了,如果不注意的话,编译出来是x86上的话,哪怕是再牛的嵌入式工程师来也没法帮你移植到开发板上。通常,本人是linux-arm-g++。 -no-3dnow -no-sse -no-sse2 这四个参数是针对CPU的指令集,老实说,我也不甚了解,不过,对于开发并不是影响很大。 -qtnamespace 把qt的库封装到命名空间,没啥重要用处,依个人爱好加吧。 -qtlibinfix 将所有的qt的.so库重命名,也没啥大用处。 好了,以上就是qt最基本的参数,接下来静待下篇吧囧。 本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。 原文链接: http://www.cuteqt.com/blog/?p=582(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |