注意事项:

  1. 编译项目,必须严格采用 --branch 是现有分支(由于官方更新会删除旧分支,似乎旧的发布版本就只有官方有,除非有保留旧的代码,否则无法正常走流程去编译,因为没代码,但是你可以去官方去找旧的版本包)

  2. 环境必须要严格匹配。具体需要环境、不同的环境,则不同。但是尽可能要相同,否则很容易就失败,或者报错百出。

  3. 编译一次很久,所以必要的时候,要根据情况设置对 update 、clean 等参数,避免浪费时间。

可适当参考(借鉴了这里的部分环节):

这里我是没有去修改代码,如(对编译工具增加 hack、编译工作区备份)。

这里的 编译工作区备份其实还是可以尝试的,就是直接退出python,然后代码直接压缩一份,后续就直接这个目录进行开展工作进行后续的编译。

Window

这里简单描述一下目录

# c: d: e: f:
# 首先进入某个盘,然后新建一个 onlyofficev9.1.0 这是版本号,具体需要去官方查最新的 release 是哪个版本。
# https://github.com/ONLYOFFICE/build_tools/tree/release/v9.1.0
# 比如现在是 9.1.0 ,所以我的目录名称是 onlyofficev9.1.0
# 当然,这个没强制要求,只是语义会比较清楚。

mkdir onlyofficev9.1.0
cd onlyofficev9.1.0

# -b release/v9.1.0 、确定有这个分支,然后 git 指定这个分支就可以了,或者直接 git clone 仓库地址、git checkout release/v9.1.0
git clone -b release/v9.1.0 https://github.com/ONLYOFFICE/build_tools.git

# 这里就结束了,后续就是配环境,稳定的FQ。

环境复刻 :

  1. winget install Git.Git (必要的时候需要设置 git 代理)( https://juejin.cn/post/6844903862961176583 )

  2. winget install Python.Python.3.10 ( pip install setuptools 确保有环境,这个我暂时不确定有没有用,但是跑一下也不会吃亏,默认就是有安装的,跑了会说已经安装。 )

  3. winget install CoreyButler.NVMforWindows

  4. nvm install v22.19.0 、nvm use v22.19.0 (必要的时候 npm 需要设置淘宝镜像,可以全局 npm install -g nrm 、 nrm use taobao)

  5. npm install -g grunt-cli

  6. 分享链接: https://s.fnnas.net/s/a6d49e84ec834b0cb7 ( 密码 abc123 )

  7. 下载 VisualStudioSetup.exe 并在线安装环境

  8. Windows SDK for Windows 11 (10.0.26100.4654) (补全没有 Debugger 等 win10sdk模块),也可以去 https://developer.microsoft.com/en-us/windows/downloads/sdk-archive/index-legacy 去找到合适的

  9. 2019的安装,直接选 C++ 组件,然后默认的就行了,直接安装即可(没有必要去掉window10sdk,多版本无所谓的)。不过我并没找 c 盘找到 C:\Program Files (x86)\Windows Kits\10\Debuggers 等模块目录,所以我额外安装了 Windows SDK for Windows 11 (10.0.26100.4654) 。确保 win10sdk 有对应模块即可,确保安装顺序,虽然不清楚安装顺序是否影响。

  10. 下载 strawberry-perl-5.40.2.1-64bit.msi、TortoiseSVN-1.14.9.29743-x64-svn-1.14.5.msi 安装并设置环境变量、自行对一下环境变量并确认是否有这个目录(C:\Program Files\TortoiseSVN\bin、C:\Strawberry\perl\bin)

  11. 下载 qt-online-installer-windows-x64-online.exe 安装 5.15.2

上述的分享链接还有两个大型文件:

release/v9.1.0:基本工作区代码

release/v9.1.0 工作区:按照上述那个网站进行 exit 然后备份整个项目(文件比较大,因为编译了部分东西)

记住, 安装了 vs2019,最好键盘按 win,并搜索 2019,找到 Developer Command Prompt for VS 2019 ,然后再去执行命令,这个时候执行 cl 也会发现是有的。

**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.11.51
** Copyright (c) 2021 Microsoft Corporation
**********************************************************************

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>cl
用于 x86 的 Microsoft (R) C/C++ 优化编译器 19.29.30159 版
版权所有(C) Microsoft Corporation。保留所有权利。

用法: cl [ 选项... ] 文件名... [ /link 链接选项... ]

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>

下述是执行命令,记住自己前往对应的目录

# 需要执行的配置命令

# 如果你只 git clone build_tools ,那你就需要在 
cd build_tools
python configure.py --branch release/v9.1.0 --module desktop --update 1 --clean 1 --qt-dir C:\Qt\5.15.2 --platform win_64 --vs-version 2019
python make.py

# 如果你是去分享链接,下载了整个 release/v9.1.0,那一定要 --update 是 0 、确保不会更新代码
cd build_tools
python configure.py --branch release/v9.1.0 --module desktop --update 0 --clean 1 --qt-dir C:\Qt\5.15.2 --platform win_64 --vs-version 2019
python make.py

# 如果你一会编译 win32 win64 、clean 记得改 1 
# 如果编译了 win64 发现卡在了什么环境上,可以 --clean 0 、就不需要全部重新编(不过需要适当考虑,因为很多时候,就是一些东西漏编或者编译失败并没退出,导致漏了,就导致后面的编失败,这个时候实际还是要 --clean 1 进行全部重新编译。

# 环境出错(就是漏装环境,提示很简单,就是提示一些工具命令不存在,这个情况就不需要重新编译了。
python configure.py --branch release/v9.1.0 --module desktop --update 0 --clean 0 --qt-dir C:\Qt\5.15.2 --platform win_64 --vs-version 2019
python make.py

# 特殊情况(部分编译失败,建议盯着,然后警告可以不理,如果出现 Error 需要根据适当情况去决定是否处理,我也遇到一个 Error,但是没处理也可以。)
# 时间充足的情况下,无脑 --clean 1 也行,就是废时间。
python configure.py --branch release/v9.1.0 --module desktop --update 0 --clean 1 --qt-dir C:\Qt\5.15.2 --platform win_64 --vs-version 2019
python make.py

时刻留意:D:\onlyoffcev9.1.0\build_tools\out,看是否有对应的目录产生,失败分很多种

  1. 如果连 目录都没出现?那这个失败就太糟糕了,就是连基础编译都没成功,都没到编译 Desktop 的模块

  2. 如果有目录了,缺失 .exe ,那纯纯就是最后的几个环节编译错了。

  3. 也可以去 core 目录 等其他目录看看 build 的目录情况,有的时候就是部分没编译完导致的。

  4. 不过部分人会在 v8 编译失败,这个就是环境问题了,尽可能完整的对环境。

常见错误:

还有很多错误,都是一些 configure.py 搞错的情况,你只需要对一下 配置没错的话,应该遇不到那么多错误。

cl 命令缺失

没有设置 vs2019 环境变量,或者没有以 win 搜 2019 的方式进入控制台

x2t 错误

典型的 core 模块没编译成功,大致就是。 目录\core\build\bin\win_64 这个 core 的 build 目录没有正常工作,这里没有 x2t,导致后续不能编译成功,本质上还是 core 模块没编译成功的问题。

grunt 命令缺失

没有执行 npm install -g grunt-cli

终端打开并执行 grunt 看看有没有

倒霉?vpn流量包不够?

VP1:https://bv.invitevp.com/#/register?code=BJ8gbe5t

重置流量包很便宜,我第一次不懂的时候弄,就搞了几十次拉取代码,愣头青,用了快五六百G。

Debugger 相关的

  1. win10 sdk 没有安装一些组件的原因,需要找到合适的 win10 sdk 模块即可。

简单判断错误

100 22832  100 22832    0     0  44856      0 --:--:-- --:--:-- --:--:-- 44856
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16875  100 16875    0     0  17781      0 --:--:-- --:--:-- --:--:-- 17763
'.\x2t' is not recognized as an internal or external command,
operable program or batch file.
copy warning [file not exist]: D:\onlyoffce9.0.0.0.0\build_tools\scripts/../../core/build/bin/win_32/allfontsgen.exe
copy warning [file not exist]: D:\onlyoffce9.0.0.0.0\build_tools\scripts/../../core/build/bin/win_32/allthemesgen.exe
'D:\onlyoffce9.0.0.0.0\build_tools\scripts\..\out\win_32\onlyoffice\DesktopEditors\converter\allfontsgen.exe' is not recognized as an internal or external command,
operable program or batch file.
Error (D:\onlyoffce9.0.0.0.0\build_tools\scripts/../out/win_32/onlyoffice/DesktopEditors/converter/allfontsgen): 1

D:\onlyoffce9.0.0.0.0\build_tools> 

x2t 错误,其实你就是去找 core/build/bin/win_32 ,很明显这个目录都没有,可以理解为 core 都没编译成功,导致最后的环节出错了。

怎么解决呢?

python configure.py --branch release/v9.1.0 --module core --update 0 --clean 1 --qt-dir C:\Qt\5.15.2 --platform win_64 --vs-version 2019
python make.py

实际概率可能也还会失败,或者直接 rm -rf 掉 core 目录,让整个 core 重新download 重新编。不过一定要根据不同的错误进行不同的解决,而不是一味的使用同一种方法【除非你知道他就是最优解】