Qt在Windows开发中比较重要的一个问题就是,发布的时候会带上一大堆插件+自己的dll,即使是最简单的helloworld发布,至少也得带上QWidget+QtCore,外加Windowsplatform的plugin(Qt4没有platform的插件,但是有QtGui),简单的一个demo就得接近20M。更何况实际工程之中往往会用到一些更占据体积的模块,比如Webkit(这个原生的webkit依赖奇多,因为要增加对qml的支持,所以链接了包括网络+qml+基础QWidget模块在内的所有模块。其实,有些网络模块和qml模块一般是不会用到的,增加了依赖的同时也增加了体积)。
解决这种常规模块(qt源代码目录下qtbase中的模块,我称之为常规模块,大部分不需要特殊的三方依赖即可编译)的编译大小问题,就是configure的选项调整成了Qt静态编译,然后使用qt静态编译的lib进行编译链接,这样链接出来的可执行文件会比原来使用动态dll的方法总体积小上很多。
整体过程大致如下:
-
先下载对应的qt-everywhere-opensource包,下载完毕之后使用管理员权限cmd进入源码目录,输入如下:
configure -static -release -desktop opengl -skip qtdoc -skip qtwebkit -nomake examples(这里可以用-debug-and-release,但是debug生成的体积十分大,浪费硬盘而且没啥用,可以不生成, 跳过examples生成步骤会极大的节省编译时间和硬盘占用,examples主要是