关于编译Qt以及驱动的一点总结吧

通过这几次的折腾,对编译Qt算是有一点的心得吧:

    首先我们编译QT的时候需要面对的是下载源代码,一般情况下我们建议下载qt-everywhere-opensource-src-4.8.2.zip这种形式的源代码。这样编译起来的问题也就很少了。当然如果人品不行的话,还是会出现很多的问题的。

    其次是选择动态编译还是静态编译,默认是动态的,我之前一直打算采用静态编译的,这样分发程序的时候很简单,但是在静态编译的时候出现许多的问题,导致我来来回回编译了几次。

    关于静态编译请参看:这篇文章 文章中是使用vs2010编译的Qt4.8.0版本。如果你刚好也是在windows下面打算采用vs进行编译,这篇文章很不错,但是有一些许多注意的问题。

  •     qt的安装路径,以及以后使用vs建立qt项目的时候,不能有中文,路径中也不能有空格,比如program files之类的路径也是不行的。
  •     删除源码包中bin目录下的syncqt和syncqt.dat文件,如你不放心可将其改名或剪切到别的位置。如不修改将发生 Perl not found in environment - cannot run syncqt 错误。
  •     一定要修改\mkspecs\win32-msvc2010下的qmake.conf文件,将其中的
    QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t-改成QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t
    注意末尾的”-“号区别。如不修改将来如有项目使用wchar_t,qt却编译成wchar_t-,编译会导致连接错误,提示找不到Qwstring;
  •     关于是否需要修改\mkspecs\win32-msvc2010下的qmake.conf文件中的QMAKE_CFLAGS_RELEASE,QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO,QMAKE_CFLAGS_DEBUG这3处后面的MD,MDd,取决你打算动态还是静态编译,如果是静态编译的话,改为:MT,MTd(最后还要在vs2010中的项目属性中将MD改为MT)。如果是动态编译的话,不要改。
  •     一定要修改src\3rdparty\webkit\Source\WebCore\platform下的DefaultLocalizationStrategy.cpp,定位到327行,将本行替换成return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));(由于word自动排版问题,请各位直接将以上英文部分一次性全复制,其实它们是一行,不要分行复制)。如果你仔细看原来的那行的话,你会发现双引号是错误的,如不修改将出现编译Webkit 时会出现 U1077错误。
  •     关于configure参数的说明,可以到时候输入configure -help自行查看,或者去官网。
  •     编译的时候建议使用-debug-and-release,如果只是单纯的编译debug或者release的时候,可能会出现一些问题。尤其是很容易出现debug调用release的东西或者相反,这种东西很烦人的,所以建议都变异,占用不了多大的空间。
  •     使用-nomake demos -nomake examples -nomake docs选项将加速编译过程,建议在编译qt源码的时候都在configure参数中加上这些,也就是不编译demos和docs和examples文件夹下面的东西,我知道这些是很好的例子,但是我的意思是在你不能确保自己能够一次性编译成功Qt的情况下,加上这些参数,能够为你节省大量的时间,因为万一编译错误的话,你又得重新来编译了。如果你日后想编译demos或者examples的时候,去demos或者examples的目录下,qmake dems.pro或者qmake examples.pro然后nmake就行了。
  • 使用-mp选项可以加速,适合多核用户提高编译速度
  • 千万不要在nmake之后,执行nmake clean,nmake confclean。别相信网上说的那些什么先备份在删除的,再说这些东西占用不了几个空间的。

 

下面说说编译Qt的mysql,oracle驱动吧。安装好oracle或者mysql之后,命令很简单,对于Mysql执行下面的命令(注意修改自己的路径名,最好别有中文和空格):

首先cd到  D:\qt\src\plugins\sqldrivers\mysql

然后qmake INCLUDEPATH+="D:\phpdev\mysql\include" LIBS+="D:\phpdev\mysql\lib\libMySQL.lib" MySQL.pro

最后nmake

  然后在你的D:\qt\plugins\sqldrivers(注意对应你的安装路径)会有8个文件。

对于oracle的话,基本差不多,命令如下:


1

2

3

4

5

set INCLUDE=%INCLUDE%;D:\app\rollen\product\11.2.0\client_1\oci\include

set LIB=%LIB%;D:\app\rollen\product\11.2.0\client_1\oci\lib\msvc

cd %QTDIR%\src\plugins\sqldrivers\oci

qmake oci.pro

nmake

也会产生8个文件。如图(由于我的博客模板的问题,图片部分没有显示,其中mysql的文件8个,oracle的8个):大家可以右键,在新标签页查看图片。

然后剩下的就是配置vs2010了,强烈推荐同时配置Vassist。

关于如何配置vs和VAssist的话网上有很多教程,我就不给百度和google这些公司制造去重复的负担了,呵呵。

笔者之前静态编译N次,都遇到了错误,最后没办法,采用动态编译,一次性成功,哈哈。

另外关于mysql和oracle11g的qt驱动,需要的朋友给我邮件,或者评论。

 参考资料:

(原创)亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

VS2008 环境中完美搭建 Qt 4.7.4 静态编译的调试与发布

文章跟新

  许多朋友还是不会编译Qt,其实吧,我觉的动态编译没什么不好,而且基本都是一次性成功的。为什么非得搞静态编译。

  另外,许多朋友询问驱动的事情,所以我上传编译好之后的驱动到我的新浪微盘。下载地址:http://vdisk.weibo.com/s/a9JGt

       编译环境:vs2010+Oracle11g/mysql/lited4.。。

时间: 2024-10-09 02:43:25

关于编译Qt以及驱动的一点总结吧的相关文章

[Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动

[Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动 楼主  发表于 2013-5-13 21:28:02 | 查看: 1616| 回复: 12 编译MyQSL数据库驱动 版权声明 该文章原创于作者yafeilinux,转载请注明出处! 导语 在上一节的末尾我们已经看到,现在可用的数据库驱动只有两类3种,那么怎样使用其他的数据库呢?在Qt中,我们需要自己编译其他数据库驱动的源码,然后当做插件来使用.下面就以现在比较流行的MySQL数据库为例,说明一下怎样在QtCreator中编译数据库驱

驱动开发-如何编译字符设备驱动

问题描述 如何编译字符设备驱动 我是一个新手 请指教 我现在只有一个.c文件,我该怎么编译,最好能具体一点 一步一步的 谢谢

lunix-如何编译字符设备驱动

问题描述 如何编译字符设备驱动 我是一个新手 请指教 我现在只有一个.c文件,我该怎么编译,最好能具体一点 一步一步的 谢谢

在 Windows下静态编译Qt SDK

1.使用条件: (1)系统:Widows XP 萝卜版 (2)QT:QT4.6.2  windows版 2.使用步骤: (1)静态编译QT A:设置qmake.conf 用记事本打开D:\Qt\2010.02.1\qt\mkspecs\win32-g++下的qmake.conf 在"QMAKE_LEXFLAGS ="后面增加"-static",保存退出. B:运行,"开始---程序程序---Qt SDK by Nokia v2010.02.1 (open

c语言-关于C语言编译C51单片机程序的一点疑问

问题描述 关于C语言编译C51单片机程序的一点疑问 1.为什么两段不相干的代码会互相影响 在主程序里有一段点亮发光二极管的代码,和一段计数器计数并在数码管上显示的代码.同时工作时,二极管正常点亮,数码管几秒才点亮一回,而且十位显示是闪烁一下就不显示了2.数码管显示时,位选和段选顺序不能改变吗?按照书上的方法是先段选再位选,但是点亮的数码管是本来不应该点亮的,段选和位选顺序换了之后就能正常显示了 解决方案 问题1)你所谓的同时工作是指led亮的同时数码管也在显示,是这样的吗?单片机跑的程序都是单线

qt 连接硬件 驱动连接操作

问题描述 qt 连接硬件 驱动连接操作 跪求 QT 驱动连接实例,例如用QT写的窗口软件点击某一按钮可以启动摄像头!新手一枚,跪求大神围观! 解决方案 http://blog.csdn.net/liang19890820/article/details/12782531http://www.oschina.net/code/snippet_124925_3789

命令行编译Qt程序(nmake)

简述 前两节讲解了如何在Visual Studio和Qt Creator中搭建Qt开发环境,并分享了我们第一个小程序-Hello World. 下面分享如何使用命令行来编译Qt程序.当然,MSVC和MinGW的配置和编译过程相差无几. 简述 编译Qt程序 注意事项 编译Qt程序 1.新建一个"HelloWorld.cpp"文件,编写代码: #include <QApplication> #include <QLabel> int main(int argc,ch

关于gcc和g++编译c文件时的一点疑惑

问题描述 关于gcc和g++编译c文件时的一点疑惑 普遍观点,gcc把c文件当做c处理,把c++当做c++处理:而g++把二者都当做c++处理.这里的处理是指语法分析那一步. 但g++在编译过程中调用了gcc.我疑惑了,语法分析是编译的第二步吧,既然g++调用了gcc,那么它是怎么让gcc把c文件当做c++处理的. 还有一点,就是对于c文件编译出来的符号,使用gcc和g++到底一不一样.比如在c文件里定义int add(int a,int b):用gcc和g++最后编译出来的符号到底是什么?是c

visual studio-VS编译qt项目出现Moc&amp;amp;#39;ing xxx.h,系统找不到指定路径问题

问题描述 VS编译qt项目出现Moc'ing xxx.h,系统找不到指定路径问题 这是用visual studio2015从git导入的用qt框架编写的c++项目.项目路径https://github.com/AncientLysine/BiliLocal. 我装上了qt插件导入了项目然后出现下图报错 提示说找不到头文件,,但是这个头文件是存在并且目录是正确的.为啥就会报错呢?求解. 解决方案 qt的moc用来生成slot和signal的,首先看看那个路径的moc是否存在和能否运行,然后每一个涉