不知道有多少同学是使用 GoldenDict 作为主力字典工具的。GoldenDict 是一个看起来非常干净小巧的开源字典工具,支持加载 Babylon 字典,内置的 Wikipedia 引擎也很好用。虽然看起来小巧,但是实际上 GoldenDict 引用了大量的第三方开源库。在 Ubuntu 下我们习惯了输入一长串 apt-get 来完成所有依赖项的安装,但是在 Windows 下,整个过程就非常痛苦了,以至于 GoldenDict 官方团队早就放弃了定期发布 Windows 下的二进制程序。
最近有机会体验了一番 Windows 下手动编译 GoldenDict 的整个过程,特此记录一下。
在微软的官方网站上,普通用户只要加入免费的 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 的编译和使用。
执行 git clone 下载 GoldenDict 源码。
下载完成之后,需要进行一个特殊的操作:为所有的 .h .c .hh .cc 文件添加 UTF-8 BOM 前缀,否则在编译时 cl 会抛异常。转换的方式有多种,由于我比较熟悉 find, grep, bash, xargs 等 Linux 系的命令行工具,所以就写了一个小脚本来完成这个操作。理论上也可以在 Windows 下使用 PowerShell 完成同样的操作。
GoldenDict 项目的 README.md "Building under Windows with MS Visual Studio" 一节,提供了 GoldenDict 依赖库的二进制版本。这里我们需要下载的是 Visual Studio 2013 的 32 位依赖库。下载完成后,解压到 goldendict/winlibs/lib/msvc 目录下。
打开 Qt 项目文件 (goldendict.pro),然后禁用 "CONFIG += zim_support",并删除 zim.hh 和 zim.cc 。
之所以这么做,是因为 zim 依赖 zstd-1.4.4 (这是一个实时压缩算法),上面的预编译库并没有集成 zstd ,而我尝试从 zstd 官方 Github 下载库并集成以失败告终。因为平时用的大多数是 Babylon 字典,所以禁用 zim 并不会带来什么体验问题。
从开始菜单打开 Qt 5.5 32-bit for Desktop (MSVC 2013) 命令行,然后进入 goldendict 目录,执行 qmake "CONFIG+=no_ffmpeg_player"。
之所以这么做,同样是因为一个依赖库未满足。GoldenDict 主要使用 ffmpeg 来播放音频,因此禁用不会对核心体验产生影响。读者如有时间的话可以尝试手动把这个库编出来。
打开 "VS2013 x86 本机工具命令提示" 的终端,进入 goldendict 目录,然后执行 nmake ,等待编译完成。
在执行 qmake 和 nmake 时,会产生不少的 Warning 。但是经过上面提到的多项调整,已经不影响编译完成了。
这是发布 Qt 应用最终的必要操作,不再赘述。
需要特别提醒的是,在其它电脑上部署时,还需要安装 VC++ 2013 的运行库
花了几个小时,终于编 (摸) 译 (鱼) 完成了,我把最终的文件放在了 Google Drive 上,需要的同学可以自取:
https://drive.google.com/file/d/1RGl7bcdhwOdEO_QirCOiUOgK3_VKqoVg/view
(字典文件请自备哦)
1
e9pWeUbh9PGCnp95 2023-01-05 17:33:14 +08:00
|
2
laqow 2023-01-05 19:14:35 +08:00
可以白嫖 github actions 吧
这个 Qt 版本体积真大啊,本末倒置的感觉,1.0.1 的版本才 15M |
3
woyaojizhu8 2023-04-04 23:46:05 +08:00
我一直以来用 ubuntu 源里的 goldendict,都不知道现在 windows 下想用 goldendict 这么麻烦了。而且以前 win 版的 goldendict 取词就不如 linux 版,不知道现在有没有变化。
|
4
GoldenDictOCR 178 天前
@laqow github actions 是最佳选择
|