Instal dan konfigurasikan SDK untuk membangun ekstensi LibreOffice

pengantar


Selama proses pengembangan produk DSS kami, diperlukan untuk membuat ekstensi untuk LibreOffice di C ++. Pilihan bahasa adalah karena kehadiran proyek yang ada di C ++, tapi saya tidak ingin membuat "kebun binatang" di proyek.

Kami mulai mempelajari materi tentang masalah ini, artikel, termasuk tentang sumber ini . Tampaknya ada banyak data, tetapi kenyataannya informasi itu sangat langka, atau tidak lagi relevan karena LO versi lama.

Saya harus mempelajari masalahnya sendiri.

gambar

Perakitan SDK


Anda harus membangun di bawah Windows


  • LibreOffice 6.2.4 / 6.2.5 + LibreOffice SDK 6.2.4 / 6.2.5 ( LibreOffice & SDK ) atau lebih tinggi.
  • GNU Zip Make CoreUtils Sed ( GNU )
  • jdk ( JDK )
  • Microsoft VS dengan kompiler yang diinstal untuk C ++ + MSTools dan Microsoft.NET

Langkah utama


Instal LibreOffice dan LibreOffice SDK, lebih disukai di direktori "Tanpa spasi".

Contoh C: \ App \ Libreoffice6.2.4.2x64 dan C: \ App \ Libreoffice6.2.4.2x64 \ sdk, masing-masing.

Kami membuka konsol, pergi ke direktori yang berisi SDK kami yang diunduh:
cd C: \ App \ Libreoffice6.2.4.2x64 \ sdk
Jalankan setsdkenv_windows.bat

Skrip ini menghasilkan file batch untuk pengguna Anda pada sistem untuk pertama kalinya, meminta Anda untuk mendaftarkan jalur ke:

  1. LibreOffice
  2. LibreOffice SDK;
  3. Utilitas GNU untuk membangun paket, kompiler C ++, C # dan VB.NET, dan direktori Java SDK.

Tentukan folder yang sesuai.

Penting ! Anda harus menentukan semua jalur ke versi kedalaman bit yang sesuai. "Penempatan otomatis komponen UNO (YA / TIDAK)" akan menginstal paket segera setelah perakitan, saya memilih TIDAK. Juga diperlukan untuk mengikuti path ke file batch, misalnya C: \ Users \ yurev.admin \ AppData \ Roaming \ libreoffice6.2_sdk dan sesuaikan path ke VCVARS32 menggunakan handle, saya melakukan ini melalui variabel baru.

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" 

Anda harus memilih jalur untuk kedalaman bit Anda.

Setelah berhasil mengatur variabel lingkungan, kami akan menerima pesan berikut:

gambar

Seharusnya tidak ada komentar - ini akan mempengaruhi perakitan nanti. Baris perintah masuk ke Shell yang disiapkan untuk mode SDK.

Kami juga pergi ke direktori dengan paket-paket GNU (C: \ Program Files (x86) \ GnuWin32 \ bin) dan mengganti nama linker link.exe sehingga tidak menjadi bingung dengan Microsoft linker di masa depan, jika perlu, kami selalu dapat menyebutnya dengan nama baru.

Kompilasi SDK


Langkah selanjutnya adalah mengkompilasi header atau (untuk Java) kelas. Dengan sendirinya, SDK adalah kumpulan komponen dengan ekstensi .idl, yang dirakit menjadi blok .udl, yang, pada gilirannya, dirakit menjadi registri dengan ekstensi .rdb.

Dalam bentuk ini, tentu saja, tidak mungkin untuk menggunakannya, tetapi tujuan dari pendekatan ini adalah kemampuan untuk menulis komponen Anda sendiri, yang kemudian ditambahkan ke pohon umum.

Ambil proyek dari contoh LibreOffice.

Pergi ke direktori C: \ App \ Libreoffice6.2.4.2x64 \ sdk \amples \ cpp \ complextoolbarcontrols dan jalankan make.

Jika data pada langkah pertama dimasukkan dengan benar dan variabel lingkungan diatur dengan benar, maka kita akan melihat

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

dan majelis akan pergi, sebagai hasil dari majelis yang kita dapatkan:

  • file yang diunduh dalam direktori 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.

Intinya, Makefile melakukan segalanya untuk kita di mana kita memasukkan variabel lingkungan dengan benar.

Cppmaker, berdasarkan file registry offapi.rdb dan types.rdb, mengunduh dependensi yang diperlukan untuk membuat file cxx.

Compiler mengumpulkan file-file ini menjadi file objek, menggantung linker dari mereka dari direktori LibreOffice mengumpulkan dll output, kemudian file manifest.xml description.xml .components dihasilkan dan semua ini dikemas bersama-sama menggunakan zip ke dalam arsip .oxt.

Versi dengan cigwin ( wiki ) harus ditinggalkan karena ketidakmungkinan membangun karena konsol yang menggantung.

Untuk membangun di Linux Anda perlu:


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

Paket-paket ini tidak memakan banyak ruang, jadi kami menggunakan gambar Docker untuk membangun ekstensi.

Proses persiapannya hampir mirip dengan Window. Alih-alih setdkenv_windows.bat, jalankan setsdkenv_unix dari / usr / lib / libreoffice / sdk.

Setelah itu, dengan analogi dengan Windows, buka / usr / lib / libreoffice / sdk / contoh / cpp / complextoolbarcontrols dan jalankan make.

Akibatnya, setelah menyelesaikan perakitan, kita akan mendapatkan ekstensi selesai yang terletak di direktori yang ditentukan selama konfigurasi melalui setsdkenv_unix.

Tautan yang membantu kami



All Articles