• 9101阅读
  • 2回复

【原创】Qt3.1.4与VC2005 expree edtion——尚未成功的试验 [复制链接]

上一主题 下一主题
离线lophyxp
 

只看楼主 倒序阅读 楼主  发表于: 2006-06-07
在坛子里看到一些关于Qtnode的文章,正巧最近M$发布了VS 2005 express edition。就想常识在VC 2005 express editon上编译Qt。于是,就有了下面这篇文章。



首先说一下我的安装环境。
操作系统是Windows xp sp2,稍微带点病毒(这年头,哪个系统没有点病毒的,当然Linux除外)。
从M$的网站上下载了VC2005ee的iso安装镜像(vc.iso,里面带有MSDN和SQL,以及安装时需要的dotnet framework2.0),下文将简称其问VC2005
M$ platform sdk for windows xp sp2的full安装包(本来是想用platform sdk for 2003 sp1的,但是这个东西目前正在下载中),下文将简称其为SDK。
Qt的源代码是从trolltech的网站上下载的qt-win-opensource-src-4.1.3.zip
Qt的补丁是从qtnode上下载的Qtnode-acs-qt4.1.3.zip



安装编译环境。
安装VC2005和SDK的过程很简单(都是win程序么,setup就行),不过
SDK需要进入命令行先解压缩一下,方法时进入存放SDK下载文件的目录,新建一个目录,然后运行
  1. PSdk-Full.bat 新建目录的名字。

最重要的是将VC2005和SDK集成起来,由VC2005提供开发cl编译器、link链接器和IDE,由SDK提供头文件和库文件。
我是遵照这篇文章的说明《Using Visual C++ 2005 Express Edition with the Microsoft Platform SDK》来进行配置的,修改了
VCProjectEngine.dll.express.config       (位于“%ProgramFiles%\Microsoft Visual Studio 8\VC , 将sdk的文件加入到VC的exec,include,lib目录列表中)
corewin_express.vsprops               (位于“%ProgramFiles%\Microsoft Visual Studio 8\VC\VCProjectDefaults,将必要的库文件加入到默认项目中)和
AppSettings.htm                         (位于“%ProgramFiles%\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1033\",开启“创建windows程序”和“创建DLL程序”的wizard)三个文件。



解压Qt源代码并打补丁
用winrar或者其他工具解开qt-win-opensource-src-4.1.3.zip,对于winrar来说,直接指着qt-win-opensource-src-4.1.3.zip的图标,点右键,选择“解压缩到当前位置”即可。解压缩qt-win-opensource-src-4.1.3.zip,会生成一个qt-win-opensource-src-4.1.3目录,里面包含Qt4.1.3的所有所有源代码和其他文件。
打开Qtnode-acs-qt4.1.3.zip,将里面的全部文件释放到qt-win-opensource-src-4.1.3目录。然后打开一个命令行提示符,进入qt-win-opensource-src-4.1.3目录,运行:
  1. installpatch413.bat

这时候会显示
  1. >installpatch413.bat
  2. patching file qconfigure.bat
  3. patching file examples/threads/waitconditions/waitconditions.pro
  4. patching file misc/bcc32pch/Makefile.win32-borland
  5. patching file misc/bcc32pch/bcc32pch.cpp
  6. patching file misc/bcc32pch/bcc32pch.pri
  7. patching file misc/bcc32pch/bcc32pch.pro
  8. patching file misc/configure/Makefile.win32-msvc.net
  9. patching file misc/configure/configure.pri
  10. patching file misc/configure/configure.pro
  11. patching file misc/configure/main.cpp
  12. patching file mkspecs/win32-bccx/qmake.conf
  13. patching file mkspecs/win32-bccx/qplatformdefs.h
  14. patching file mkspecs/win32-borland/qmake.conf
  15. patching file mkspecs/win32-borland/qplatformdefs.h
  16. patching file mkspecs/win32-msvc/qmake.conf
  17. patching file mkspecs/win32-msvc/qplatformdefs.h
  18. patching file mkspecs/win32-msvc/win32app.dsp
  19. patching file mkspecs/win32-msvc/win32dll.dsp
  20. patching file mkspecs/win32-msvc/win32lib.dsp
  21. patching file mkspecs/win32-msvc.net/qmake.conf
  22. patching file mkspecs/win32-msvc.net/qplatformdefs.h
  23. patching file mkspecs/win32-msvc2005/qmake.conf
  24. patching file mkspecs/win32-msvc2005/qplatformdefs.h
  25. patching file qmake/Makefile.win32-bccx
  26. patching file qmake/Makefile.win32-borland
  27. patching file qmake/Makefile.win32-msvc
  28. patching file qmake/Makefile.win32-msvc.net
  29. patching file qmake/Makefile.win32-msvc2005
  30. patching file qmake/qmake.pri
  31. patching file qmake/qmake.pro
  32. patching file qmake/generators/metamakefile.cpp
  33. patching file qmake/generators/win32/borland_bmake.cpp
  34. patching file qmake/generators/win32/borland_bmake.h
  35. patching file qmake/generators/win32/msvc_dsp.cpp
  36. patching file qmake/generators/win32/msvc_dsp.h
  37. patching file qmake/generators/win32/msvc_nmake.cpp
  38. patching file qmake/generators/win32/msvc_nmake.h
  39. patching file qmake/generators/win32/msvc_objectmodel.cpp
  40. patching file qmake/generators/win32/msvc_objectmodel.h
  41. patching file qmake/generators/win32/msvc_vcproj.cpp
  42. patching file qmake/generators/win32/msvc_vcproj.h
  43. patching file src/qbase.pri
  44. patching file src/corelib/corelib.pro
  45. patching file src/corelib/global/qglobal.cpp
  46. patching file src/corelib/global/qglobal.h
  47. patching file src/corelib/io/qdebug.h
  48. patching file src/corelib/io/qdir.cpp
  49. patching file src/corelib/io/qsettings.cpp
  50. patching file src/corelib/io/qtextstream.cpp
  51. patching file src/corelib/io/qtextstream.h
  52. patching file src/corelib/kernel/qabstractitemmodel.cpp
  53. patching file src/corelib/kernel/qvariant.h
  54. patching file src/corelib/tools/qlist.h
  55. patching file src/corelib/tools/qshareddata.h
  56. patching file src/corelib/tools/qstring.h
  57. patching file src/corelib/tools/qunicodetables.cpp
  58. patching file src/gui/gui.pro
  59. patching file src/gui/dialogs/qfiledialog.cpp
  60. patching file src/gui/dialogs/qmessagebox.h
  61. patching file src/gui/image/qpicture.cpp
  62. patching file src/gui/image/qpnghandler.cpp
  63. patching file src/gui/image/qxpmhandler.cpp
  64. patching file src/gui/itemviews/qheaderview.cpp
  65. patching file src/gui/itemviews/qlistwidget.cpp
  66. patching file src/gui/kernel/qkeysequence.cpp
  67. patching file src/gui/painting/painting.pri
  68. patching file src/gui/painting/qcolor_p.cpp
  69. patching file src/gui/painting/qmath_p.h
  70. patching file src/gui/painting/qmatrix.h
  71. patching file src/gui/painting/qpaintengine_raster.cpp
  72. patching file src/gui/painting/qpainter.cpp
  73. patching file src/gui/painting/qrgb.h
  74. patching file src/gui/styles/qcommonstyle.cpp
  75. patching file src/gui/styles/qplastiquestyle.cpp
  76. patching file src/gui/styles/qstyleoption.cpp
  77. patching file src/gui/widgets/qcombobox.h
  78. patching file src/gui/widgets/qscrollbar.cpp
  79. patching file src/gui/widgets/qtoolbar_p.h
  80. patching file src/network/network.pro
  81. patching file src/opengl/opengl.pro
  82. patching file src/plugins/inputmethods/imsw-multi/qmultiinputcontext.h
  83. patching file src/qt3support/qt3support.pro
  84. patching file src/qt3support/dialogs/q3filedialog.cpp
  85. patching file src/qt3support/dialogs/q3wizard.cpp
  86. patching file src/qt3support/itemviews/q3iconview.cpp
  87. patching file src/qt3support/itemviews/q3listbox.cpp
  88. patching file src/qt3support/itemviews/q3table.cpp
  89. patching file src/qt3support/tools/q3garray.cpp
  90. patching file src/qt3support/tools/q3gvector.cpp
  91. patching file src/qt3support/widgets/q3scrollview.cpp
  92. patching file src/sql/sql.pro
  93. patching file src/tools/rcc/rcc.cpp
  94. patching file src/tools/uic/ui4.cpp
  95. patching file src/xml/xml.pro
  96. patching file tools/assistant/assistant.pro
  97. patching file tools/designer/src/components/formeditor/default_layoutdecoration.
  98. cpp
  99. patching file tools/designer/src/components/formeditor/qdesigner_resource.cpp
  100. patching file tools/designer/src/components/propertyeditor/qpropertyeditor_model
  101. .cpp
  102. patching file tools/designer/src/components/signalsloteditor/signalsloteditor.cp
  103. p
  104. patching file tools/designer/src/components/signalsloteditor/signalsloteditorwin
  105. dow.cpp
  106. patching file tools/designer/src/designer/qdesigner_formwindow.cpp
  107. patching file tools/designer/src/plugins/widgets/widgets.pro
  108. patching file tools/linguist/linguist/linguist.pro
  109. patching file tools/linguist/shared/translator.cpp
  110. patching file tools/porting/src/projectporter.cpp
  111. patching file tools/porting/src/rpptreeevaluator.cpp
  112. patching file tools/porting/src/rpptreewalker.cpp
  113. patching file tools/porting/src/src.pro
  114. 请按任意键继续. . .
  115. Now run qconfigure.bat


一般这一步不会有什么错误。如果出错的话,就看看你是不是将qtnode解压缩出来的文件方错了目录。



配置、编译Qt
老实说,我在这一步其实没有成功。这一步是这样做的:
由于安装了Qtnode补丁,我们在配置的时候就不能再使用configure.exe了(《Qt_with_VS》是这么说得)。
而应该使用qconfigure.bat,其运行格式是:
  1. You must specify the compiler to use:
  2. qconfigure {g++/msvc/msvc.net/msvc2005/borland/bccx} [options]

下面这行命令可以查看配置情况和帮助
  1. qconfigure msvc2005 --help

由于我用的是msvc2005,所以运行
  1. qconfigure.bat msvc2005 -release -qmake -p
  2. rocess -plugin-sql-odbc -qt-gif

然后会显示并询问你是否同意GPL协议
  1. This is the Qt/Windows Open Source Edition.
  2. You are licensed to use this software under the terms of
  3. the GNU General Public License.
  4. Type '?' to view the GNU General Public License.
  5. Type 'y' to accept this license offer.
  6. Type 'n' to decline this license offer.
  7. Do you accept the terms of the license?

输入y,敲回车。
然后会显示当前Qt的配置情况,并询问是否开始编译qmake
(这一步之后,我开始出错了)
  1. Environment:
  2.   INCLUDE=
  3.     C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE
  4.   LIB=
  5.     C:\Program Files\Microsoft Visual Studio 8\VC\LIB
  6.     C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib
  7.   PATH=
  8.     C:\Program Files\Microsoft Visual Studio 8\Common7\IDE
  9.     C:\Program Files\Microsoft Visual Studio 8\VC\BIN
  10.     C:\Program Files\Microsoft Visual Studio 8\Common7\Tools
  11.     C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin
  12.     C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
  13.     C:\Program Files\Microsoft Visual Studio 8\VC\VCPackages
  14.     C:\WINDOWS\system32
  15.     C:\WINDOWS
  16.     C:\WINDOWS\System32\Wbem
  17.     C:\Program Files\VDMSound\
  18.     C:\Program Files\Java\jdk1.5.0_06\bin
  19.     C:\Program Files\Java\jre1.5.0_06\bin
  20.     C:\Program Files\Microsoft SQL Server\90\Tools\binn\
  21.     C:\Program Files\Csound\bin
  22. You are licensed to use this software under the terms of the GNU GPL.
  23. See E:\qtnode\qt-win-opensource-src-4.1.3/LICENSE.GPL
  24. Configuration:
  25.   minimal-config
  26.   small-config
  27.   medium-config
  28.   large-config
  29.   full-config
  30.   release
  31. Qt Configuration:
  32.   release
  33.   zlib
  34.   png
  35.   mng
  36.   accessibility
  37.   qt3support
  38.   opengl
  39.   ipv6
  40. QMAKESPEC...................win32-g++ (commandline)
  41. Architecture................windows
  42. Maketool....................mingw32-make
  43. Debug symbols...............no
  44. Accessibility support.......yes
  45. STL support.................yes
  46. Exception support...........yes
  47. RTTI support................yes
  48. OpenGL support..............yes
  49. Qt3 compatibility...........yes
  50. Third Party Libraries:
  51.   ZLIB support............qt
  52.   GIF support.............plugin
  53.   JPEG support............plugin
  54.   PNG support.............qt
  55.   MNG support.............qt
  56. Styles:
  57.   Windows.................yes
  58.   Windows XP..............yes
  59.   Plastique...............yes
  60.   Motif...................yes
  61.   CDE.....................yes
  62. Sql Drivers:
  63.   ODBC....................plugin
  64.   MySQL...................no
  65.   OCI.....................no
  66.   PostgreSQL..............no
  67.   TDS.....................no
  68.   DB2.....................no
  69.   SQLite..................no
  70.   SQLite2.................no
  71.   InterBase...............no
  72. Sources are in..............E:\qtnode\qt-win-opensource-src-4.1.3
  73. Build is done in............E:\qtnode\qt-win-opensource-src-4.1.3
  74. Install prefix..............E:\qtnode\qt-win-opensource-src-4.1.3
  75. Headers installed to........E:\qtnode\qt-win-opensource-src-4.1.3\include
  76. Libraries installed to......E:\qtnode\qt-win-opensource-src-4.1.3\lib
  77. Plugins installed to........E:\qtnode\qt-win-opensource-src-4.1.3\plugins
  78. Binaries installed to.......E:\qtnode\qt-win-opensource-src-4.1.3\bin
  79. Docs installed to...........E:\qtnode\qt-win-opensource-src-4.1.3\doc
  80. Data installed to...........E:\qtnode\qt-win-opensource-src-4.1.3
  81. Translations installed to...E:\qtnode\qt-win-opensource-src-4.1.3\translations
  82. Examples installed to.......E:\qtnode\qt-win-opensource-src-4.1.3\examples
  83. Demos installed to..........E:\qtnode\qt-win-opensource-src-4.1.3\demos
  84. Creating qmake...
  85. execute: File or path is not found (mingw32-make)
  86. execute: File or path is not found (mingw32-make)
  87. Cleaning qmake failed, return code -1
  88. Going to compile qmake now
  89. Continue? (Y/N):

输入y,敲回车,Qt的编译就开始了。


遇到错误了
在之后的编译刚开始没多久,我就遇到了错误提示。
  1.     cl -c -FIqmake_pch.h -Yuqmake_pch.h -Fptmp\qmake_pch.pch -nologo -Zm200
  2. -GS -wd4996 -O2 -MD -GR -EHsc -W3 -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_EDITION=
  3. QT_EDITION_DESKTOP -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQT_NO_TEXTCODEC -DQT_NO_
  4. LIBRARY -DQT_NO_STL -DQT_NO_COMPRESS -DQT_NO_UNICODETABLES -DQT_NO_GEOM_VARIANT
  5. -DQT_NO_DATASTREAM -DQMAKE_OPENSOURCE_EDITION -DQT_NODLL -DQT_NO_THREAD -DQT_NO_
  6. QOBJECT -DWIN32 -I"../src/corelib/arch/generic" -I"generators" -I"generators\uni
  7. x" -I"generators\win32" -I"generators\mac" -I"../include" -I"../include/QtCore"
  8. -I"../qmake" -I"../mkspecs/win32-msvc2005" -Fotmp\ @C:\DOCUME~1\lophyxy\LOCALS~1
  9. \Temp\nm74E.tmp
  10. makefiledeps.cpp
  11. ../mkspecs/win32-msvc2005\qplatformdefs.h(30) : fatal error C1083: Cannot open i
  12. nclude file: 'windows.h': No such file or directory
  13. NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 8\VC\BIN\c
  14. l.EXE"' : return code '0x2'
  15. Stop.

cl编译器提示:找不到windows.h文件。
[ 此贴被lophyxp在2006-06-07 21:56重新编辑 ]
离线fanyu
只看该作者 1楼 发表于: 2006-06-07
windows.h那是win32 sdk里的核心文件,你可能没有安装它。也不建议使用vs express 版本,它缺少很多重要的东西。
离线huliyaya
只看该作者 2楼 发表于: 2009-06-03
快速回复
限100 字节
 
上一个 下一个