Installieren und konfigurieren Sie das SDK zum Erstellen der LibreOffice-Erweiterung

Einführung


Während des Entwicklungsprozesses unseres DSS-Produkts musste eine Erweiterung für LibreOffice in C ++ erstellt werden. Die Wahl der Sprache war auf das Vorhandensein vorhandener Projekte in C ++ zurückzuführen, aber ich wollte in den Projekten keinen „Zoo“ erstellen.

Wir haben begonnen, Materialien zu diesem Thema, Artikel, einschließlich dieser Ressource, zu studieren . Es scheint, dass es viele Daten gibt, aber tatsächlich waren die Informationen entweder sehr knapp oder aufgrund veralteter Versionen von LO nicht mehr relevant.

Ich musste das Thema selbst studieren.

Bild

SDK-Assembly


Um unter Windows zu bauen, benötigen Sie


  • LibreOffice 6.2.4 / 6.2.5 + LibreOffice SDK 6.2.4 / 6.2.5 ( LibreOffice & SDK ) oder höher.
  • GNU Zip Make CoreUtils Sed ( GNU )
  • jdk ( JDK )
  • Microsoft VS mit installiertem Compiler für C ++ + MSTools und Microsoft.NET

Hauptschritte


Installieren Sie LibreOffice und LibreOffice SDK, vorzugsweise im Verzeichnis "Ohne Leerzeichen".

Beispiel C: \ App \ Libreoffice6.2.4.2x64 bzw. C: \ App \ Libreoffice6.2.4.2x64 \ sdk.

Wir öffnen die Konsole und
wechseln in das Verzeichnis mit unserem heruntergeladenen SDK: cd C: \ App \ Libreoffice6.2.4.2x64 \ sdk
Führen Sie setsdkenv_windows.bat aus.

Dieses Skript generiert zum ersten Mal eine Batchdatei für Ihren Benutzer auf dem System und fordert Sie auf, die Pfade zu registrieren:

  1. LibreOffice
  2. LibreOffice SDK;
  3. GNU-Dienstprogramme zum Erstellen von Paketen, C ++ -, C # - und VB.NET-Compilern sowie das Java SDK-Verzeichnis.

Geben Sie die entsprechenden Ordner an.

Wichtig ! Sie müssen alle Pfade zu den Versionen der entsprechenden Bittiefen angeben. „Automatische Bereitstellung von UNO-Komponenten (JA / NEIN)“ installiert das Paket sofort nach der Montage. Ich habe NEIN gewählt. Es ist auch notwendig, den Pfad zur Batch-Datei zu gehen, z. B. C: \ Users \ yurev.admin \ AppData \ Roaming \ libreoffice6.2_sdk, und den Pfad zu VCVARS32 mithilfe von Handles anzupassen. Ich habe dies über eine neue Variable durchgeführt.

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" 

Sie müssen einen Pfad für Ihre Bittiefe auswählen.

Nach dem erfolgreichen Festlegen der Umgebungsvariablen wird die folgende Meldung angezeigt:

Bild

Es sollten keine Kommentare vorhanden sein - dies wirkt sich später auf die Assembly aus. Die Befehlszeile wechselt in die für den SDK-Modus vorbereitete Shell.

Wir gehen auch in das Verzeichnis mit den GNU-Paketen (C: \ Programme (x86) \ GnuWin32 \ bin) und benennen den Linker link.exe um, damit er in Zukunft nicht mit dem Microsoft-Linker verwechselt wird. Falls erforderlich, können wir ihn jederzeit unter einem neuen Namen aufrufen.

SDK-Kompilierung


Der nächste Schritt besteht darin, die Header oder (für Java) Klassen zu kompilieren. Das SDK selbst ist eine Sammlung von Komponenten mit der Erweiterung .idl, die zu .udl-Blöcken zusammengesetzt sind, die wiederum zu einer Registrierung mit der Erweiterung .rdb zusammengesetzt werden.

In dieser Form ist es natürlich unmöglich, sie zu verwenden, aber das Ziel dieses Ansatzes ist die Fähigkeit, eigene Komponenten zu schreiben, die dann dem allgemeinen Baum hinzugefügt werden.

Nehmen Sie das Projekt aus dem LibreOffice-Beispiel.

Wechseln Sie in das Verzeichnis C: \ App \ Libreoffice6.2.4.2x64 \ sdk \ examples \ cpp \ complextoolbarcontrols und führen Sie make aus.

Wenn die Daten im ersten Schritt korrekt eingegeben und die Umgebungsvariablen korrekt eingestellt wurden, werden wir sehen

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

und die Versammlung wird gehen, als Ergebnis der Versammlung, die wir bekommen:

  • heruntergeladene Dateien im Verzeichnis 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.

Im Wesentlichen erledigt das Makefile alles für uns, in dem wir die Umgebungsvariablen korrekt eingegeben haben.

Cppmaker lädt basierend auf den Registrierungsdateien offapi.rdb und types.rdb die Abhängigkeiten herunter, die zum Erstellen von cxx-Dateien erforderlich sind.

Der Compiler sammelt diese Dateien in Objektdateien. Wenn Sie den Linker aus dem LibreOffice-Verzeichnis anhängen, wird die Ausgabe-DLL gesammelt. Anschließend werden die Komponentendateien manifest.xml description.xml generiert und alles zusammen mit zip in das .oxt-Archiv gepackt.

Die Version mit cigwin ( Wiki ) musste wegen der Unmöglichkeit des Bauens aufgrund einer hängenden Konsole aufgegeben werden.

Um unter Linux zu bauen, benötigen Sie:


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

Diese Pakete nehmen nicht viel Platz ein, daher verwenden wir das Docker-Image, um die Erweiterung zu erstellen.

Der Vorbereitungsprozess ist fast ähnlich wie bei Window. Führen Sie anstelle von setsdkenv_windows.bat setsdkenv_unix aus / usr / lib / libreoffice / sdk aus.

Gehen Sie danach analog zu Windows zu / usr / lib / libreoffice / sdk / examples / cpp / complextoolbarcontrols und führen Sie make aus.

Als Ergebnis erhalten wir nach Abschluss der Assembly die fertige Erweiterung, die sich in dem bei der Konfiguration angegebenen Verzeichnis befindet, über setsdkenv_unix.

Links, die uns geholfen haben



All Articles