Instale e configure o SDK para criar a extensão do LibreOffice

Introdução


Durante o processo de desenvolvimento de nosso produto DSS, foi necessário criar uma extensão para o LibreOffice em C ++. A escolha do idioma ocorreu devido à presença de projetos existentes em C ++, mas eu não queria criar um "zoológico" nos projetos.

Começamos a estudar materiais sobre esta questão, artigos, inclusive sobre este recurso . Parece que existem muitos dados, mas, na verdade, as informações eram muito escassas ou não eram mais relevantes devido a versões desatualizadas do LO.

Eu tive que estudar a questão por conta própria.

imagem

Montagem do SDK


Para criar no Windows, você precisará


  • LibreOffice 6.2.4 / 6.2.5 + LibreOffice SDK 6.2.4 / 6.2.5 ( LibreOffice e SDK ) ou superior.
  • O GNU Zip torna o CoreUtils Sed ( GNU )
  • jdk ( JDK )
  • Microsoft VS com compilador instalado para C ++ + MSTools e Microsoft.NET

Passos principais


Instale o LibreOffice e o LibreOffice SDK, de preferência no diretório "Sem espaços".

Exemplo C: \ App \ Libreoffice6.2.4.2x64 e C: \ App \ Libreoffice6.2.4.2x64 \ sdk, respectivamente.

Abrimos o console,
acessamos o diretório que contém o SDK baixado: cd C: \ App \ Libreoffice6.2.4.2x64 \ sdk
Execute setsdkenv_windows.bat

Esse script gera um arquivo em lotes para o usuário no sistema pela primeira vez, solicitando que você registre os caminhos para:

  1. LibreOffice
  2. SDK do LibreOffice;
  3. Utilitários GNU para criar pacotes, compiladores C ++, C # e VB.NET e o diretório Java SDK.

Especifique as pastas apropriadas.

Importante ! Você deve especificar todos os caminhos para as versões das profundidades de bits correspondentes. "A implantação automática de componentes UNO (SIM / NÃO)" instalará o pacote imediatamente após a montagem, eu escolhi NÃO. Também é necessário seguir o caminho para o arquivo em lotes, por exemplo C: \ Users \ yurev.admin \ AppData \ Roaming \ libreoffice6.2_sdk e ajustar o caminho para VCVARS32 usando alças, eu fiz isso por meio de uma nova variável.

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" 

Você precisa escolher um caminho para sua profundidade de bits.

Após definir com êxito as variáveis ​​de ambiente, receberemos a seguinte mensagem:

imagem

Não deve haver nenhum comentário - isso afetará a montagem posteriormente. A linha de comando entra no Shell preparada para o modo SDK.

Também vamos ao diretório com os pacotes GNU (C: \ Arquivos de Programas (x86) \ GnuWin32 \ bin) e renomeamos o vinculador link.exe para que ele não se confunda com o vinculador Microsoft no futuro, se necessário, sempre podemos chamá-lo com um novo nome.

Compilação do SDK


O próximo passo é compilar os cabeçalhos ou as classes (para Java). Por si só, o SDK é uma coleção de componentes com a extensão .idl, montados em blocos .udl, que, por sua vez, são montados em um registro com a extensão .rdb.

Dessa forma, é claro, é impossível usá-lo, mas o objetivo dessa abordagem é a capacidade de escrever seus próprios componentes, que são adicionados à árvore geral.

Pegue o projeto no exemplo do LibreOffice.

Vá para o diretório C: \ App \ Libreoffice6.2.4.2x64 \ sdk \ examples \ cpp \ complextoolbarcontrols e execute make.

Se os dados na primeira etapa forem inseridos corretamente e as variáveis ​​de ambiente forem definidas corretamente, 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).   .

e a montagem irá, como resultado da montagem, obtemos:

  • arquivos baixados no diretório 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.

Em essência, o Makefile faz tudo por nós no qual inserimos corretamente as variáveis ​​de ambiente.

O Cppmaker, com base nos arquivos de registro offapi.rdb e types.rdb, baixa as dependências necessárias para criar arquivos cxx.

O compilador coleta esses arquivos em objetos, vinculando-os a partir do diretório LibreOffice, coleta a DLL de saída e, em seguida, os arquivos manifest.xml description.xml .components são gerados e tudo isso é empacotado usando zip no arquivo .oxt.

A versão com cigwin ( wiki ) teve que ser abandonada devido à impossibilidade de construção devido a um console suspenso.

Para criar no Linux, você precisará de:


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

Esses pacotes não ocupam muito espaço; portanto, usamos a imagem do Docker para criar a extensão.

O processo de preparação é quase semelhante ao Windows. Em vez de setsdkenv_windows.bat, execute setsdkenv_unix em / usr / lib / libreoffice / sdk.

Depois disso, por analogia com o Windows, vá para / usr / lib / libreoffice / sdk / examples / cpp / complextoolbarcontrols e execute make.

Como resultado, após a conclusão da montagem, obteremos a extensão final que se encontra no diretório especificado durante a configuração por meio de setsdkenv_unix.

Links que nos ajudaram



All Articles