Installer et configurer le SDK pour la construction de l'extension LibreOffice

introduction


Au cours du processus de développement de notre produit DSS, il a été nécessaire de créer une extension pour LibreOffice en C ++. Le choix du langage était dû à la présence de projets existants en C ++, mais je ne voulais pas créer de «zoo» dans les projets.

Nous avons commencé à étudier des documents sur cette question, des articles, y compris sur cette ressource . Il semblerait qu'il y ait beaucoup de données, mais en fait, les informations étaient soit très rares, soit elles n'étaient plus pertinentes en raison de versions obsolètes de LO.

J'ai dû étudier la question par moi-même.

image

Assemblage SDK


Pour construire sous Windows, vous aurez besoin


  • LibreOffice 6.2.4 / 6.2.5 + LibreOffice SDK 6.2.4 / 6.2.5 ( LibreOffice & SDK ) ou supérieur.
  • GNU Zip Make CoreUtils Sed ( GNU )
  • jdk ( JDK )
  • Microsoft VS avec compilateur installé pour C ++ + MSTools et Microsoft.NET

Étapes principales


Installez LibreOffice et LibreOffice SDK, de préférence dans le répertoire "Sans espaces".

Exemple C: \ App \ Libreoffice6.2.4.2x64 et C: \ App \ Libreoffice6.2.4.2x64 \ sdk, respectivement.

Nous ouvrons la console, accédez au répertoire contenant notre SDK téléchargé:
cd C: \ App \ Libreoffice6.2.4.2x64 \ sdk
Exécutez setsdkenv_windows.bat

Ce script génère pour la première fois un fichier batch pour votre utilisateur sur le système, vous demandant d'enregistrer les chemins d'accès à:

  1. LibreOffice
  2. LibreOffice SDK;
  3. Utilitaires GNU pour créer des packages, des compilateurs C ++, C # et VB.NET et le répertoire Java SDK.

Spécifiez les dossiers appropriés.

Important ! Vous devez spécifier tous les chemins d'accès aux versions des profondeurs de bits correspondantes. «Déploiement automatique des composants UNO (OUI / NON)» installera le package immédiatement après l'assemblage, j'ai choisi NON. Il est également nécessaire de suivre le chemin d'accès au fichier de commandes, par exemple C: \ Users \ yurev.admin \ AppData \ Roaming \ libreoffice6.2_sdk et d'ajuster le chemin d'accès à VCVARS32 à l'aide de poignées, je l'ai fait via une nouvelle 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" 

Vous devez choisir un chemin pour votre profondeur de bits.

Après avoir correctement défini les variables d'environnement, nous recevrons le message suivant:

image

Il ne devrait y avoir aucun commentaire - cela affectera l'assembly plus tard. La ligne de commande va dans Shell préparée pour le mode SDK.

Nous allons également dans le répertoire contenant les packages GNU (C: \ Program Files (x86) \ GnuWin32 \ bin) et renommons l'éditeur de liens link.exe afin qu'il ne soit plus confondu avec l'éditeur de liens Microsoft à l'avenir, si nécessaire, nous pouvons toujours l'appeler par un nouveau nom.

Compilation du SDK


L'étape suivante consiste à compiler les en-têtes ou (pour Java) les classes. En soi, le SDK est une collection de composants avec l'extension .idl, qui sont assemblés en blocs .udl, qui, à leur tour, sont assemblés dans un registre avec l'extension .rdb.

Sous cette forme, bien sûr, il est impossible de l'utiliser, le but de cette approche est la possibilité d'écrire vos propres composants, qui sont ensuite ajoutés à l'arborescence générale.

Prenez le projet de l'exemple LibreOffice.

Accédez au répertoire C: \ App \ Libreoffice6.2.4.2x64 \ sdk \ examples \ cpp \ complextoolbarcontrols et exécutez make.

Si les données de la première étape sont entrées correctement et que les variables d'environnement sont correctement définies, nous verrons

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

et l'assemblage ira, à la suite de l'assemblage, nous obtenons:

  • des fichiers téléchargés dans le répertoire 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 substance, le Makefile fait tout pour nous dans lequel nous avons correctement entré les variables d'environnement.

Cppmaker, basé sur les fichiers de registre offapi.rdb et types.rdb, télécharge les dépendances nécessaires pour créer des fichiers cxx.

Le compilateur collecte ces fichiers en objets, en les liant à partir du répertoire LibreOffice, collecte la DLL de sortie, puis les fichiers manifest.xml description.xml .components sont générés et tout cela est empaqueté ensemble à l'aide de zip dans l'archive .oxt.

La version avec cigwin ( wiki ) a dû être abandonnée en raison de l'impossibilité de construire à cause d'une console suspendue.

Pour construire sous Linux, vous aurez besoin de:


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

Ces packages ne prennent pas beaucoup de place, nous utilisons donc l'image Docker pour construire l'extension.

Le processus de préparation est presque similaire à Window. Au lieu de setsdkenv_windows.bat, exécutez setsdkenv_unix à partir de / usr / lib / libreoffice / sdk.

Après cela, par analogie avec Windows, accédez à / usr / lib / libreoffice / sdk / examples / cpp / complextoolbarcontrols et exécutez make.

Par conséquent, à la fin de l'assemblage, nous obtiendrons l'extension terminée qui se trouve dans le répertoire spécifié lors de la configuration via setsdkenv_unix.

Liens qui nous ont aidés



All Articles