Windows平台上编译Qt-4.8.x Debug版注意事项
目录 |
0 为什么要编译qt-4.8.x的Windows Debug版?
目的:为了方便调试qt的代码!VS比Linux gdb好使多了。
1 MSVC版本的选择
最好使用VS2008+,它的安装包自带了Windows SDK,不要用过时的VS2005(后者需要额外安装Windows SDK)
Note:最新版本已经是qt-4.8.6,而且官方发布了WinCE的预编译版本。看起来似乎Digia已经解决了icu库在WinCE上的交叉编译问题?(待确认)
Note2:VS2008+(VS2010,乃至VS2012、VS2013)似乎默认已经自带了Windows SDK,不像2005还需要另外单独安装。
2 WinRAR的问题
从压缩包qt-everywhere-opensource-src-4.8.2.tar.gz解压:
——如果使用的winrar程序有问题,可能导致解压出来的文件名有些变成了*.cpp0000644,使用一个Ruby脚本批量修正此问题(需要安装Ruby 1.9.3运行环境)
# Recursive scan a dir, & perform each-file rename operation: def batch_files_from_dir(basepath) sub_dirs = Array.new Dir.new(basepath).entries.each { |subpath| path = File.join(basepath, subpath) if File.file?(path) then if /0000[0-9]{3}$/.match(path) then puts "#{path}" new_path = path.gsub(/0000[0-9]{3}$/, ) File.rename(path, new_path) puts "\t--->#{new_path}" end elsif subpath!="." and subpath!=".." and File.directory?(path) then batch_files_from_dir(path) end } end ARGV.each{ |path| batch_files_from_dir( path ) }
3 qmake子项目裁剪
- 输入cmd,进入命令行环境
- 运行Visual Studio自带的那个VC vsvarsall.bat脚本,自动配置环境参数(qt configure时需要调用cl做编译测试)
- 先运行一次configure:
- 命令行:configure -debug -opensource -no-qt3support -platform win32-msvc2008 -webkit-debug -no-s60
- 让qmake为所有的Qt项目生成全部的*.vcproj(VS项目文件)
- 从projects.pro中删除demos、tools、examples、docs、translations模块(#注释掉对应行)再次运行一次configure。
- 这会影响最终生成的projects.sln,使得其只包含必要的子项目模块
- 如果你不在这个时候删除,则默认生成的projects.sln会包含全部.pro对应的.vcproj子项目,导致不必要的编译。
- 用VS2008打开projects.sln,默认startup项目是bootstrap。加入demos/browser、QtUITools 2个项目(找到对应的.vcproj文件,加入即可)
- 先编译一次;
- 然后选中QtWebKit作为startup项目,再build一次;
- 这里会提示webcore编译失败,修改DefaultLocalizationStrategy.cpp报错行,删除掉那个全角双引号即可;
- 最后选中browser项目,再build一次;
- 这回提示找不到QtUIToolsd.lib链接,添加对应的vcproj即可(tools\designer\src\uitools\QtUiTools.vcproj)
- 注意,在这种配置下,有些子项目模块最终仍然没有被编译到,说明对QtWebKit来说,根本不需要(比如那个phonon)
- 但是当需要在Qt-4.8.x上编译更高版本的WebKit时,这些项目模块仍然需要(如QtSql、QtXml等)
- 再次编译,这回成功了
4 调试QtWebKit
设置QtWebKit为启动项目,调试命令行为demos/browser程序的完全路径,启动路径设为Qt bin。