cz's profile虫虫的窝PhotosBlogListsMore Tools Help

Blog


    2/25/2008

    使用msvc-2005编译Qt4.3.3(开源版)

    说明:Qt从4.3.2版本开始支持msvc-2005,而网上传播较广的都是基于qtwin补丁进行编译的方法:
    1、http://www.qtopia.org.cn/phpBB2/viewtopic.php?t=892
    2、http://www.qtnode.net/wiki/Qt4_with_Visual_Studio
    虽然以上两篇都捎带提到了Qt4.3.2及以上版本直接支持msvc-2005的问题,但是说的并不详细,而且和使用qtwin补丁的方法混合在一起写。本文根据以上两个链接所指向的内容修改,描述msvc-2005直接编译Qt4.3.3(OpenSource)的过程。
    一、到Trolltech官方网站下载源代码包qt-win-opensource-src-4.3.3.zip,并解压到某个目录下,我直接把它放D:\qt-win-opensource-src-4.3.3\下。
    二、安装MS Visual C++ 2005 Express Edition(这里不讨论安装sp1的情况),把它安装在D:\Program Files\Microsoft Visual Studio 8\下。
    三、安装PSDK,安装目录为C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\。
    这里附一个镜像地址:ftp://202.38.73.222/pub2/Software/Development/5.2.3790.2075.51.PlatformSDK_Svr2003R2_rtm.img
    或者你也可以在线安装:http://www.microsoft.com/downloads/details.aspx?FamilyId=0BAF2B35-C656-4969-ACE8-E4C0C0716ADB&displaylang=en
    四、根据安装目录的具体情况修改D:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat文件,根据上文的安装目录,详细如下:
    @SET VSINSTALLDIR=D:\Program Files\Microsoft Visual Studio 8
    @SET VCINSTALLDIR=D:\Program Files\Microsoft Visual Studio 8\VC
    @SET FrameworkDir=C:\WINDOWS\Microsoft.NET\Framework
    @SET FrameworkVersion=v2.0.50727
    @SET FrameworkSDKDir=D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0
    @if "%VSINSTALLDIR%"=="" goto error_no_VSINSTALLDIR
    @if "%VCINSTALLDIR%"=="" goto error_no_VCINSTALLDIR
    @echo Setting environment for using Microsoft Visual Studio 2005 x86 tools.
    @rem
    @rem Root of Visual Studio IDE installed files.
    @rem
    @set DevEnvDir=D:\Program Files\Microsoft Visual Studio 8\Common7\IDE
    @set QTDIR=D:\qt-win-opensource-src-4.3.3
    @set QMAKESPEC=win32-msvc2005
    @set PATH==%QTDIR%\bin;D:\Program Files\Microsoft Visual Studio 8\Common7\IDE;D:\Program Files\Microsoft Visual Studio 8\VC\BIN;D:\Program Files\Microsoft Visual Studio 8\Common7\Tools;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;D:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%
    @set INCLUDE=%QTDIR%\include;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include;D:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;%INCLUDE%
    @set LIB=%QTDIR%\lib;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib;D:\Program Files\Microsoft Visual Studio 8\VC\LIB;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%
    @set LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
    @goto end
    :error_no_VSINSTALLDIR
    @echo ERROR: VSINSTALLDIR variable is not set.
    @goto end
    :error_no_VCINSTALLDIR
    @echo ERROR: VCINSTALLDIR variable is not set.
    @goto end
    :end
    然后运行 Visual Studio 2005 命令提示,在命令行中输入:cd D:\qt-win-opensource-src-4.3.3进入Qt源码所在的目录:
    D:\qt-win-opensource-src-4.3.3>
    运行该目录下的配置工具configure.exe,结束后nmake开始编译
    configure
    nmake
    nmake confclean
    编译需要很长的一段时间,你计算机的性能决定了接下来可以吃饭还是可以好好的睡一觉。
    五、编译完成后我们的工作也差不多完成了80%了,剩下的就是IDE设置和项目生成了。接下来是对你自己的Qt代码生成项目文件、makefile文件和编译,在这之前得把D:\qt-win-opensource-src-4.3.3\bin添加进path,然后在你的Qt代码目录下执行:
    qmake -project
    qmake -makefile
    nmake
    六、使用msvc-2005编译的理由之一就是要使用MS系列IDE的代码补全功能,如果要用Visual C++ 2005 Express Edition编写代码,得生成.vcproj
    qmake -project
    qmake -t vcapp
    用vs2005ee打开*.vcproj文件,试试代码补全功能,高手别鄙视,我的记忆力决定了自己很依赖这个功能。
    七、最后一步,设置Visual C++ 2005 Express Edition编译环境使得可以直接通过IDE的操作来编译代码:
    打开 工具->选项->项目和解决方案->VC++目录,把
    D:\qt-win-opensource-src-4.3.3\bin添加进【可执行文件】选项
    D:\qt-win-opensource-src-4.3.3\include;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include添加进【包含文件】选项
    D:\qt-win-opensource-src-4.3.3\lib;C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib添加进【库文件】选项
    原理和修改vsvars32.bat文件是一样的。
    或者,你也可以用步骤五的命令方式编译你的Qt代码。
    八、最后,如果你的Visual C++ 2005 Express Edition安装了sp1包,那么请参考开头列出的第二个链接。如果想了解Qt4.3.3(OpenSource)在win下还支持那些编译器,可以查看D:\qt-win-opensource-src-4.3.3\mkspecs文件夹,看样子应该是可以支持VS专业版的,回头再仔细看看Qt4和VS的许可协议,有点懵。