经常使用zeal来查文档,但是在Windows上zeal经常闪退,而Arch上没有这个问题,就想着自己clone一份最新的代码自己编译。

编译前的准备

  • 使用Visual Studio 2019安装MSVC.

  • 安装CMake.

  • 下载Qt5.15.2.

    这里推荐使用aqtinstall,假设我们要把Qt下载到D:\Qt

    1
    2
    3
    4
    5
    6
    #安装aqtinstall
    pip install aqtinstall
    #安装qt到D:\Qt
    py -m aqt install --outputdir D:\Qt 5.15.2 windows desktop win64_msvc2019_64 -m all --base https://mirrors.tuna.tsinghua.edu.cn/qt
    #安装OpenSSL到D:\Qt
    py -m aqt tool windows tools_openssl_x64 1.1.1-10 qt.tools.openssl.win_x64 --outputdir D:\Qt --base https://mirrors.tuna.tsinghua.edu.cn/qt

    Q: OpenSSL部分的为什么是1.1.1-10

    A: 可以从这个链接得出,可以看到在本文写下的时文件都是由1.1.1-10开头

  • 下载libarchive.

    直链:https://libarchive.org/downloads/libarchive-v3.5.1-win64.zip

    解压在D:\tmp\libarchive

  • 下载SQLite.

    直链:https://sqlite.org/2021/sqlite-dll-win64-x64-3360000.zip

    解压之后放在D:\tmp\sqlite3,然后打开Developer PowerShell for VS 2019,执行以下命令:

    1
    2
    cd D:\tmp\sqlite3
    LIB /DEF:sqlite3.def /MACHINE:X64

    会得到一个sqlite3.lib

  • 下载zeal的源码.

    1
    git clone -q --branch=master https://github.com/zealdocs/zeal.git D:/tmp/zeal

开始编译

  1. 打开Developer PowerShell for VS 2019并将工具添加到环境变量中

    1
    2
    3
    4
    5
    6
    #Qt
    $env:Path = "D:\Qt\5.15.2\msvc2019_64\bin;$env:Path"
    #libarchive
    $env:Path = "D:\tmp\libarchive\bin;$env:Path"
    #sqlite3
    $env:Path = "D:\tmp\sqlite3;$env:Path"
  2. cd进入zeal文件夹执行以下命令

    1
    2
    cmake -B build
    cmake --build build --config release -j 8
  3. 在执行build命令的时候可能会出现以下错误:

    1
    2
    3
    4
    D:\tmp\zeal\src\libs\ui\browsertab.cpp(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 [D:\tmp\zeal\build\src\libs\ui\Ui.vcxproj]
    D:\tmp\zeal\src\libs\ui\browsertab.cpp(80,27): error C2001: 常量中有换行符 [D:\tmp\zeal\build\src\libs\ui\Ui.vcxproj]
    D:\tmp\zeal\src\libs\ui\browsertab.cpp(102,1): error C2001: 常量中有换行符 [D:\tmp\zeal\build\src\libs\ui\Ui.vcxproj]
    D:\tmp\zeal\src\libs\ui\browsertab.cpp(80,1): fatal error C1057: 宏扩展中遇到意外的文件结束 [D:\tmp\zeal\build\src\libs\ui\Ui.vcxproj]

    只需要打开D:\tmp\zeal\src\libs\ui\browsertab.cpp文件,将编码改为UTF-8 with BOM然后重新执行以下命令即可

    1
    cmake --build build --config release -j 8
  4. 编译完成之后需要使用windeployqt帮助我们打包

    1
    2
    3
    4
    5
    cd D:\tmp\zeal\build\bin\Release\
    windeployqt .\zeal.exe
    cp D:\tmp\libarchive\bin\archive.dll ./
    cp D:\tmp\sqlite3\sqlite3.dll ./
    cp D:\Qt\Tools\OpenSSL\Win_x64\bin\*.dll ./

成品展示