安装和配置SDK以构建LibreOffice扩展

介绍


在我们的DSS产品的开发过程中,需要使用C ++为LibreOffice创建扩展。语言的选择是由于C ++中存在现有项目,但是我不想在项目中创建“ zoo”。

我们开始研究有关此问题的材料,文章,包括有关该资源的文章似乎有很多数据,但是实际上,该信息要么非常稀缺,要么由于LO的版本过旧而不再相关。

我不得不自己研究这个问题。

图片

SDK组装


要在Windows下构建,您需要


  • LibreOffice 6.2.4 / 6.2.5 + LibreOffice SDK 6.2.4 / 6.2.5(LibreOfficeSDK)或更高版本。
  • GNU Zip使CoreUtils Sed(GNU
  • jdk(JDK
  • Microsoft VS,已安装用于C ++ + MSTools和Microsoft.NET的编译器

主要步骤


安装LibreOffice和LibreOffice SDK,最好在“无空格”目录中。

示例C:\ App \ Libreoffice6.2.4.2x64和C:\ App \ Libreoffice6.2.4.2x64 \ sdk。

我们打开控制台,转到包含已下载的SDK的目录:
cd C:\ App \ Libreoffice6.2.4.2x64 \ sdk
运行setsdkenv_windows.bat

该脚本首次为系统上的用户生成一个批处理文件,要求您注册以下路径:

  1. 图书馆
  2. LibreOffice SDK;
  3. GNU实用程序,用于构建程序包,C ++,C#和VB.NET编译器以及Java SDK目录。

指定适当的文件夹。

重要!您必须指定相应位深度版本的所有路径。 “自动部署UNO组件(是/否)”将在组装后立即安装软件包,我选择了“否”。还必须遵循批处理文件的路径,例如C:\ Users \ yurev.admin \ AppData \ Roaming \ libreoffice6.2_sdk,并使用句柄调整VCVARS32的路径,这是通过新变量完成的。

set OO_SDK_CPP_HOME=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.20.27508\bin\HostX64\x64
set OO_SDK_VCVARS_HOME=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build
if defined OO_SDK_VCVARS_HOME call "%OO_SDK_VCVARS_HOME%\VCVARS64.bat" 

您需要为您的位深度选择路径。

成功设置环境变量后,我们将收到以下消息:

图片

不应有任何注释-这将在以后影响程序集。命令行进入为SDK模式准备的Shell。

我们还转到带有GNU软件包的目录(C:\ Program Files(x86)\ GnuWin32 \ bin),并重命名link.exe链接器,以便将来不会与Microsoft链接器混淆,如有必要,我们始终可以使用新名称对其进行调用。

SDK编译


下一步是编译标头或(对于Java)类。SDK本身就是具有.idl扩展名的组件的集合,这些组件被组装成.udl块,而这些块又被组装成具有.rdb扩展名的注册表。

当然,以这种形式不可能使用它,但是这种方法的目标是能够编写自己的组件,然后将它们添加到通用树中。

以LibreOffice示例为例。

转到C:\ App \ Libreoffice6.2.4.2x64 \ sdk \ examples \ cpp \ complextoolbarcontrols目录并执行make。

如果第一步中的数据输入正确并且环境变量设置正确,那么我们将看到

C:\App\Libreoffice6.2.4.2x64\sdk\examples\cpp\complextoolbarcontrols>make
mkdir c:\libreoffice6.2_sdk\WINexample.out\slo\complextoolbarcontrols
   c:\libreoffice6.2_sdk\WINexample.out\slo\complextoolbarcontrols  .
make: [c:/libreoffice6.2_sdk/WINexample.out/slo/complextoolbarcontrols/MyProtocolHandler.obj]  1 ()
cl -c -MD -Zm500 -Zc:wchar_t- -wd4251 -wd4275 -wd4290 -wd4675 -wd4786 -wd4800 -GR -EHa -I. -Ic:/libreoffice6.2_sdk/WINexample.out/inc-Ic:/libreoffice6.2_sdk/WINexample.out/inc/examples -I../../../include -Ic:/libreoffice6.2_sdk/WINexample.out/inc/complextoolbarcontrols -DWIN32 -DWNT -D_DLL -DCPPU_ENV=mscx -Foc:\libreoffice6.2_sdk\WINexample.out\slo\complextoolbarcontrols\MyProtocolHandler.obj MyProtocolHandler.cxx
  Microsoft (R) C/C++  19.21.27702.2  x64
(C)   (Microsoft Corporation).   .

并且组装将进行,由于组装,我们得到:

  • 在C:\ libreoffice6.2_sdk \ WINexample.out \ inc目录中下载文件,
  • manifest.xml C:\libreoffice6.2_sdk\WINexample.out\misc\complextoolbarcontrols\complextoolbarcontrols\META-INF,
  • complextoolbarcontrols.uno.dll C:\libreoffice6.2_sdk\WINexample.out\misc\complextoolbarcontrols\Windows,
  • , description.xml C:\libreoffice6.2_sdk\WINexample.out\misc\complextoolbarcontrols,
  • C:\libreoffice6.2_sdk\WINexample.out\slo\complextoolbarcontrols
  • complextoolbarcontrols.oxt C:\libreoffice6.2_sdk\WINexample.out\bin.

本质上,Makefile为我们完成了所有我们正确输入环境变量的操作。

Cppmaker基于offapi.rdb和types.rdb注册表文件,下载生成cxx文件所需的依赖项。

编译器将这些文件收集到目标文件中,从LibreOffice目录中将它们悬挂下来的链接器收集输出dll,然后生成manifest.xml description.xml .components文件,并使用zip将所有这些文件打包到.oxt存档中。

带有cigwin(wiki的版本由于控制台悬空而无法构建,因此不得不放弃。

要在Linux下构建,您需要:


ibcurl4-openssl-dev zip git build-essential wget curl gstreamer1.0-libav libkrb5-dev nasm graphviz ccache libpython3-dev libreoffice-dev*

这些软件包不会占用太多空间,因此我们使用Docker映像来构建扩展。

准备过程几乎与Window相似。从/ usr / lib / libreoffice / sdk运行setsdkenv_unix,而不是setsdkenv_windows.bat。

之后,以与Windows类似的方式,转至/ usr / lib / libreoffice / sdk / examples / cpp / complextoolbarcontrols并运行make。

结果,组装完成后,我们将通过setsdkenv_unix获得完成的扩展,该扩展位于配置期间指定的目录中。

有助于我们的链接



All Articles