Instale y configure el SDK para construir la extensión LibreOffice

Introducción


Durante el proceso de desarrollo de nuestro producto DSS, fue necesario crear una extensión para LibreOffice en C ++. La elección del lenguaje se debió a la presencia de proyectos existentes en C ++, pero no quería crear un "zoológico" en los proyectos.

Comenzamos a estudiar materiales sobre este tema, artículos, incluso sobre este recurso . Parece que hay muchos datos, pero en realidad la información era muy escasa o ya no era relevante debido a versiones obsoletas de LO.

Tuve que estudiar el tema por mi cuenta.

imagen

SDK ensamblado


Para construir bajo Windows necesitarás


  • LibreOffice 6.2.4 / 6.2.5 + LibreOffice SDK 6.2.4 / 6.2.5 ( LibreOffice y SDK ) o superior.
  • GNU Zip Make CoreUtils Sed ( GNU )
  • jdk ( JDK )
  • Microsoft VS con compilador instalado para C ++ + MSTools y Microsoft.NET

Pasos principales


Instale LibreOffice y LibreOffice SDK, preferiblemente en el directorio "Sin espacios".

Ejemplo C: \ App \ Libreoffice6.2.4.2x64 y C: \ App \ Libreoffice6.2.4.2x64 \ sdk, respectivamente.

Abrimos la consola, vamos al directorio que contiene nuestro SDK descargado:
cd C: \ App \ Libreoffice6.2.4.2x64 \ sdk
Ejecutar setsdkenv_windows.bat

Este script genera un archivo por lotes para su usuario en el sistema por primera vez, pidiéndole que registre las rutas a:

  1. LibreOffice
  2. LibreOffice SDK;
  3. Utilidades GNU para construir paquetes, compiladores C ++, C # y VB.NET, y el directorio Java SDK.

Especifique las carpetas apropiadas.

Importante ! Debe especificar todas las rutas a las versiones de las profundidades de bits correspondientes. "Implementación automática de componentes UNO (SÍ / NO)" instalará el paquete inmediatamente después del ensamblaje, elegí NO. También es necesario seguir la ruta al archivo por lotes, por ejemplo C: \ Users \ yurev.admin \ AppData \ Roaming \ libreoffice6.2_sdk y ajustar la ruta a VCVARS32 usando controladores, hice esto a través de una nueva variable.

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" 

Debe elegir una ruta para su profundidad de bits.

Después de configurar con éxito las variables de entorno, recibiremos el siguiente mensaje:

imagen

No debe haber ningún comentario; esto afectará el ensamblaje más adelante. La línea de comando entra en Shell preparada para el modo SDK.

También vamos al directorio con los paquetes GNU (C: \ Archivos de programa (x86) \ GnuWin32 \ bin) y cambiamos el nombre del enlazador link.exe para que no se confunda con el enlazador Microsoft en el futuro, si es necesario, siempre podemos llamarlo con un nuevo nombre.

Compilación SDK


El siguiente paso es compilar los encabezados o (para Java) clases. Por sí mismo, el SDK es una colección de componentes con la extensión .idl, que se ensamblan en bloques .udl, que, a su vez, se ensamblan en un registro con la extensión .rdb.

De esta forma, por supuesto, es imposible usarlo, pero el objetivo de este enfoque es la capacidad de escribir sus propios componentes, que luego se agregan al árbol general.

Tome el proyecto del ejemplo de LibreOffice.

Vaya al directorio C: \ App \ Libreoffice6.2.4.2x64 \ sdk \ examples \ cpp \ complextoolbarcontrols y ejecute make.

Si los datos en el primer paso se ingresan correctamente y las variables de entorno se configuran correctamente, entonces veremos

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).   .

y la asamblea se irá, como resultado de la asamblea obtenemos:

  • archivos descargados en el directorio 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.

En esencia, el Makefile hace todo por nosotros en el que ingresamos correctamente las variables de entorno.

Cppmaker, basado en los archivos de registro offapi.rdb y types.rdb, descarga las dependencias necesarias para construir archivos cxx.

El compilador recopila estos archivos en archivos de objetos, colgando el enlazador de ellos del directorio LibreOffice recopila el dll de salida, luego se generan los archivos manifest.xml description.xml .components y todo esto se empaqueta usando zip en el archivo .oxt.

La versión con cigwin ( wiki ) tuvo que abandonarse debido a la imposibilidad de construir debido a una consola colgante.

Para construir bajo Linux necesitarás:


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

Estos paquetes no ocupan mucho espacio, por lo que utilizamos la imagen de Docker para construir la extensión.

El proceso de preparación es casi similar al de Window. En lugar de setsdkenv_windows.bat, ejecute setsdkenv_unix desde / usr / lib / libreoffice / sdk.

Después de eso, por analogía con Windows, vaya a / usr / lib / libreoffice / sdk / examples / cpp / complextoolbarcontrols y ejecute make.

Como resultado, al completar el ensamblaje, obtendremos la extensión final que se encuentra en el directorio especificado durante la configuración a través de setsdkenv_unix.

Enlaces que nos ayudaron



All Articles