不知道有多少同学是使用 GoldenDict 作为主力字典工具的。GoldenDict 是一个看起来非常干净小巧的开源字典工具,支持加载 Babylon 字典,内置的 Wikipedia 引擎也很好用。虽然看起来小巧,但是实际上 GoldenDict 引用了大量的第三方开源库。在 Ubuntu 下我们习惯了输入一长串 apt-get 来完成所有依赖项的安装,但是在 Windows 下,整个过程就非常痛苦了,以至于 GoldenDict 官方团队早就放弃了定期发布 Windows 下的二进制程序。
最近有机会体验了一番 Windows 下手动编译 GoldenDict 的整个过程,特此记录一下。
步骤 1. 安装 Visual Studio 2013 (x86) 和 Qt 5.5.1 (x86)
在微软的官方网站上,普通用户只要加入免费的 Visual Studio Dev Essentials 计划,就可以下载到 30 天试用版的 Visual Studio 2013 Professional ,这对我们临时编译 GoldenDict 来说已经完全够用了。在 Qt 的官方 archive 站点 download.qt.io/new_archive/qt/ 可以下载到 Qt 5.5.1 为 VS2013 预编译的安装包。
为什么要用 VS2013 和 Qt 5.5.1 呢?原因是 GoldenDict 依赖于 QtWebkit 组件,但是 Qt 从 5.6 版开始就从预编译包里移除了 QtWebkit ,转而开始支持基于 Chromium 的 QtWebEngine 。我们不想编译整个 Qt ,希望使用 Qt 官方发布的预编译二进制包,所以就使用 Qt 5.5.1 。而 Qt 5.5.1 的 Windows 预编译包,最新支持的是 VS 2013 ,于是便使用 2013 。
Qt 5 和 VC++ 2013 都是非常成熟的框架和软件,实测并不影响最新版 GoldenDict 的编译和使用。
步骤 2. 下载 GoldenDict 源码
执行 git clone 下载 GoldenDict 源码。
步骤 3. 编码转换
下载完成之后,需要进行一个特殊的操作:为所有的 .h .c .hh .cc 文件添加 UTF-8 BOM 前缀,否则在编译时 cl 会抛异常。转换的方式有多种,由于我比较熟悉 find, grep, bash, xargs 等 Linux 系的命令行工具,所以就写了一个小脚本来完成这个操作。理论上也可以在 Windows 下使用 PowerShell 完成同样的操作。
步骤 4. 下载 GoldenDict 提供的预编译依赖库
GoldenDict 项目的 README.md "Building under Windows with MS Visual Studio" 一节,提供了 GoldenDict 依赖库的二进制版本。这里我们需要下载的是 Visual Studio 2013 的 32 位依赖库。下载完成后,解压到 goldendict/winlibs/lib/msvc 目录下。
步骤 5. 禁用 zim 字典支持
打开 Qt 项目文件 (goldendict.pro),然后禁用 "CONFIG += zim_support",并删除 zim.hh 和 zim.cc 。
之所以这么做,是因为 zim 依赖 zstd-1.4.4 (这是一个实时压缩算法),上面的预编译库并没有集成 zstd ,而我尝试从 zstd 官方 Github 下载库并集成以失败告终。因为平时用的大多数是 Babylon 字典,所以禁用 zim 并不会带来什么体验问题。
步骤 6. 生成 Makefile
从开始菜单打开 Qt 5.5 32-bit for Desktop (MSVC 2013) 命令行,然后进入 goldendict 目录,执行 qmake "CONFIG+=no_ffmpeg_player"。
之所以这么做,同样是因为一个依赖库未满足。GoldenDict 主要使用 ffmpeg 来播放音频,因此禁用不会对核心体验产生影响。读者如有时间的话可以尝试手动把这个库编出来。
步骤 7. 开始编译
打开 "VS2013 x86 本机工具命令提示" 的终端,进入 goldendict 目录,然后执行 nmake ,等待编译完成。
在执行 qmake 和 nmake 时,会产生不少的 Warning 。但是经过上面提到的多项调整,已经不影响编译完成了。
步骤 8. 添加 Qt 相关 dll 到 GoldenDict.exe 目录
这是发布 Qt 应用最终的必要操作,不再赘述。
需要特别提醒的是,在其它电脑上部署时,还需要安装 VC++ 2013 的运行库
花了几个小时,终于编 (摸) 译 (鱼) 完成了,我把最终的文件放在了 Google Drive 上,需要的同学可以自取:
https://drive.google.com/file/d/1RGl7bcdhwOdEO_QirCOiUOgK3_VKqoVg/view
(字典文件请自备哦)