V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nealot
V2EX  ›  程序员

GoldenDict Windows 最新版 (20230115) 编译指南 (附二进制程序)

  •  
  •   nealot · 2023-01-05 17:22:05 +08:00 · 1799 次点击
    这是一个创建于 716 天前的主题,其中的信息可能已经有所发展或是发生改变。

    不知道有多少同学是使用 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

    (字典文件请自备哦)

    4 条回复    2024-05-21 12:14:19 +08:00
    e9pWeUbh9PGCnp95
        1
    e9pWeUbh9PGCnp95  
       2023-01-05 17:33:14 +08:00
    laqow
        2
    laqow  
       2023-01-05 19:14:35 +08:00
    可以白嫖 github actions 吧
    这个 Qt 版本体积真大啊,本末倒置的感觉,1.0.1 的版本才 15M
    woyaojizhu8
        3
    woyaojizhu8  
       2023-04-04 23:46:05 +08:00
    我一直以来用 ubuntu 源里的 goldendict,都不知道现在 windows 下想用 goldendict 这么麻烦了。而且以前 win 版的 goldendict 取词就不如 linux 版,不知道现在有没有变化。
    GoldenDictOCR
        4
    GoldenDictOCR  
       214 天前
    @laqow github actions 是最佳选择
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2418 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:46 · PVG 23:46 · LAX 07:46 · JFK 10:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.