首页 > 代码库 > Windows平台上编译Qt-4.8.x Debug版注意事项

Windows平台上编译Qt-4.8.x Debug版注意事项

Windows平台上编译Qt-4.8.x Debug版注意事项

跳转至: 导航、 搜索

目录

  • 1为什么要编译qt-4.8.x的Windows Debug版?
  • 21 MSVC版本的选择
  • 32 WinRAR的问题
  • 43 qmake子项目裁剪
  • 54 调试QtWebKit

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子项目裁剪

  1. 输入cmd,进入命令行环境
  2. 运行Visual Studio自带的那个VC vsvarsall.bat脚本,自动配置环境参数(qt configure时需要调用cl做编译测试)
  3. 先运行一次configure:
    命令行:configure -debug -opensource -no-qt3support -platform win32-msvc2008 -webkit-debug -no-s60
    让qmake为所有的Qt项目生成全部的*.vcproj(VS项目文件)
  4. 从projects.pro中删除demos、tools、examples、docs、translations模块(#注释掉对应行)再次运行一次configure。
    这会影响最终生成的projects.sln,使得其只包含必要的子项目模块
    如果你不在这个时候删除,则默认生成的projects.sln会包含全部.pro对应的.vcproj子项目,导致不必要的编译。
  5. 用VS2008打开projects.sln,默认startup项目是bootstrap。加入demos/browser、QtUITools 2个项目(找到对应的.vcproj文件,加入即可)
  6. 先编译一次;
  7. 然后选中QtWebKit作为startup项目,再build一次;
    这里会提示webcore编译失败,修改DefaultLocalizationStrategy.cpp报错行,删除掉那个全角双引号即可;
  8. 最后选中browser项目,再build一次;
    这回提示找不到QtUIToolsd.lib链接,添加对应的vcproj即可(tools\designer\src\uitools\QtUiTools.vcproj)
  9. 注意,在这种配置下,有些子项目模块最终仍然没有被编译到,说明对QtWebKit来说,根本不需要(比如那个phonon)
    1. 但是当需要在Qt-4.8.x上编译更高版本的WebKit时,这些项目模块仍然需要(如QtSql、QtXml等)
  10. 再次编译,这回成功了

4 调试QtWebKit

设置QtWebKit为启动项目,调试命令行为demos/browser程序的完全路径,启动路径设为Qt bin。 

Windows平台上编译Qt-4.8.x Debug版注意事项