libreoffice 01 windows 版本编译

01 基本信息

目前office开源版本主流是 libreoffice。其前身是openoffice。
官网:https://zh-cn.libreoffice.org/
wiki: https://wiki.documentfoundation.org/
windows 版编译说明: https://wiki.documentfoundation.org/Development/BuildingOnWindows
发布版本下载地址: https://www.libreoffice.org/download/download/

关于类图文档https://docs.libreoffice.org/sw/html/annotated.html
比如:在页面搜索SwFrame,可以得到如下详细类图及类关系:
官方类图及类关系

一个比较古老的关于OpenOffice 的中文介绍:
OpenOffice.org简介
OpenOffice.org技术架构
OpenOffice.org中的XML应用

一个比较古老的介绍uno的文档:https://wiki.openoffice.org/wiki/UNO_registery_and_Bootstrapping

这个 IDE 的配置方法:https://wiki.documentfoundation.org/Development/IDE

libreoffice的国际化技术

https://www.cnblogs.com/linux-wang/p/9001368.html

02 win 版本libreoffice编译方法

参照官网: 使用 Cygwin 和 MSVC 在 Windows 上构建 LibreOffice:提示和技巧

02.01 vs2019及必要组件

vs2019 社区版、专业版、企业版均可。只要安装下列必要组件即可。

MSVC v142 - VS 2019 C++ x64/x86 build tools (v14.2x)
C++ core features
Windows 10 SDK (10.0.xxxxx.x)
Windows Universal C Runtime
C++ ATL for v142 build tools (x86 & x64)
.NET Framework 4.x.x SDK
C++ Clang Compiler for Windows (9.0.0)

建议安装英文语言支持。

02.02 安装jdk

https://adoptopenjdk.net/archive.html

windows 64位:
https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.7%2B10.1/OpenJDK11U-jdk_x64_windows_hotspot_11.0.7_10.zip

windwos32位
https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.7%2B10.1/OpenJDK11U-jdk_x86-32_windows_hotspot_11.0.7_10.zip

02.03 安装cygwin 64位版本

下载并安装setup-x86_64.exe

注意:对于 libreoffice 7.0.4.2 版本,可能会编译不过。建议使用 libreoffice 7.1版本源码编译。libreoffice7.0.4.2版本,需要使用老版本的cygwin才可以编译通过,20210329日之前的。

对于3月29日后的cygwin64位版本编译libreoffice可能会出现 libgpg-error 错误,参考:
https://wiki.documentfoundation.org/Development/msvc-x86_64

参考libreoffice中文论坛上的帖子:有没有在win10上编译通过的

用管理员权限启动cmd窗口,运行setup-x86_64.exe

注意:管理员权限cmd窗口不是PowerShell

安装路径:`D:\cygwin64`
setup-x86_64.exe -P autoconf -P automake -P bison -P cabextract -P doxygen -P flex -P gcc-g++ ^
  -P gettext-devel -P git -P gnupg -P gperf -P make -P mintty ^
  -P nasm -P openssh -P openssl -P patch -P perl -P python -P python3 ^
  -P pkg-config -P rsync -P unzip -P vim -P wget -P zip -P perl-Archive-Zip ^
  -P perl-Font-TTF -P perl-IO-String

建议安装时,保留下载的cygwin安装包到本地。并且安装、编译成功后,保存本地cygwin安装包。以备不时之需。

02.04 指定更新依赖目录

libreoffice 编译时,会下载很多依赖文件。需要指定一个依赖存放目录。
该测试中 在代码同级的 libo-core-buildtools 目录中。

e:\git\libreoffice\libo-core-buildtools # 存放依赖包文件夹
e:\git\libreoffice\libo-core # 存放libreoffice源码目录
e:\cygwin64  # cygwin 安装目录

02.05 git 配置

下列配置项在 windows 和 cygwin 中都设置

:: 设置不转换换行符
git config --global core.safecrlf false
git config --global core.autocrlf false
::设置不忽略大小写
git config --global core.ignorecase false
::设置HTTP仓库不用每次输入账户密码
git config --global credential.helper store

:: 下载代码
git clone --recursive https://gerrit.libreoffice.org/core.git libo-core
:: 切换到当前稳定分支libreoffice-7-1-3
git checkout -b b7.1.3 origin/libreoffice-7-1-3

02.06 安装ant和junit

mkdir -p /cygdrive/e/libreoffice/libo-core-buildtools
cd /cygdrive/e/cygdrive/e/libreoffice/libo-core-buildtools
wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.9.5-bin.tar.bz2
tar -xjvf apache-ant-1.9.5-bin.tar.bz2
wget http://downloads.sourceforge.net/project/junit/junit/4.10/junit-4.10.jar

02.07 安装GNU make

mkdir -p /opt/lo/bin
cd /opt/lo/bin
wget http://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
mv make-4.2.1-msvc.exe make.exe

02.08 设置环境变量 VSDEVCMD

VSDEVCMD=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\VsDevCmd.bat

02.08 生成工程文件

cd /cygdrive/e/git/libreoffice/libo-core
mkdir buildx64 && cd buildx64
/cygdrive/e/git/libreoffice/libo-core/autogen.sh --with-external-tar=/cygdrive/e/git/libreoffice/libo-core-buildtools/lo-externalsrc \
--with-junit=/cygdrive/e/git/libreoffice/libo-core-buildtools/junit-4.10.jar \
--with-jdk-home=/cygdrive/d/install/Java/jdk-16.0.1 \
--with-ant-home=/cygdrive/d/install/eclipse/apache-ant-1.10.10 \
--with-visual-studio=2019 \
--disable-dependency-tracking \
--enable-pch \
--disable-ccache \
--without-ucrt-dir \
--with-lang=zh-CN \
--enable-symbols \
--host=x86_64-pc-cygwin \
--enable-debug \
--with-distro=LibreOfficeWin64

02.09 编译

:: cd /cygdrive/e/git/libreoffice/libo-core/buildx64
/opt/lo/bin/make build-nocheck gb_COLOR=1

02.10 生成vs工程文件

:: cd /cygdrive/e/git/libreoffice/libo-core/buildx64
/opt/lo/bin/make vs2019-ide-integration
:: 设置 Executable soffice_exe 为vs2019的默认启动项

libreoffice7.1.3 vs2019工程

03 关于 libreoffice的国际化

libreoffice的国际化使用gettext工具集。

gettext是一套工具集的名称。这套工具集包含 xgettext/msginit/msgfmt 等一套建立模版(POT)、创建PO文件和编译MO文件的工具。

参考:关于操作系统中英文切换的.po和.mo介绍
https://www.cnblogs.com/linux-wang/p/9001368.html

例子:
比如:我们发现一个弹出窗口字符串

xxxx yyyy zzzzz

以上内容中文简体,到 源码的 translations\source\zh-CN 目录查找,
发现中文字符串在 yyyy 在 translations\source\zh-CN\desktop\messages.po

继而找到直接依赖字符串
// 代码中的直接依赖
desktop\inc\strings.hrc

如果要修改其他语言的该字符串内容,即可到对应 translations\source\XXX 下面去找,xxx即为感兴趣的语言目录。

04 关于libreoffice多进程启动

libreoffice 7.0.4 避免多重启动使用的是 PipeIpcThread,但是到7.1中,已经把PipeIpcThread取消掉了。

libreoffice支持每个应用一个进程的方式启动。具体如下:

::如果指定word、excel、ppt的环境变量即可开多个进程
:: 开word
soffice.exe -env:UserInstallation="file:///C:/TEMP/tempOffice1" -writer
:: 开excel
soffice.exe -env:UserInstallation="file:///C:/TEMP/tempOffice2" -calc
:: 开ppt
soffice.exe -env:UserInstallation="file:///C:/TEMP/tempOffice3" -impress

这样每个应用一个窗口,一般 -env:UserInstallation 参数相同,会放到一个进程中运行。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 29
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值