قم بتثبيت وتكوين SDK لبناء ملحق LibreOffice

المقدمة


أثناء عملية تطوير منتج DSS ، كان مطلوبًا إنشاء ملحق لـ LibreOffice في C ++. كان اختيار اللغة يرجع إلى وجود مشاريع موجودة في C ++ ، لكنني لم أرغب في إنشاء "حديقة حيوانات" في المشاريع.

بدأنا في دراسة المواد حول هذه القضية ، والمقالات ، بما في ذلك على هذا المورد . يبدو أن هناك الكثير من البيانات ، ولكن في الواقع كانت المعلومات إما نادرة جدًا ، أو لم تعد ذات صلة بسبب الإصدارات القديمة من LO.

كان علي أن أدرس القضية بمفردي.

صورة

تجميع SDK


للبناء تحت Windows ستحتاج


  • LibreOffice 6.2.4 / 6.2.5 + LibreOffice SDK 6.2.4 / 6.2.5 ( LibreOffice & SDK ) أو أعلى.
  • GNU Zip Make CoreUtils Sed ( GNU )
  • JDK ( JDK )
  • Microsoft VS مع مترجم مثبت لـ C ++ + MSTools و Microsoft.NET

الخطوات الرئيسية


قم بتثبيت LibreOffice و LibreOffice SDK ، ويفضل في دليل "بدون مسافات".

مثال C: \ App \ Libreoffice6.2.4.2x64 و C: \ App \ Libreoffice6.2.4.2x64 \ sdk على التوالي.

نفتح وحدة التحكم ، انتقل إلى الدليل الذي يحتوي على SDK الذي تم تنزيله:
cd C: \ App \ Libreoffice6.2.4.2x64 \ sdk
Run setsdkenv_windows.bat يقوم

هذا البرنامج النصي بإنشاء ملف دفعي للمستخدم على النظام لأول مرة ، ويطلب منك تسجيل المسارات إلى:

  1. ليبر أوفيس
  2. LibreOffice SDK ؛
  3. أدوات غنو لبناء الحزم ، C ++ ، C # و VB.NET ، ودليل Java SDK.

حدد المجلدات المناسبة.

هام ! يجب تحديد جميع المسارات لإصدارات أعماق البتات المقابلة. "النشر التلقائي لمكونات UNO (نعم / لا)" سيتم تثبيت الحزمة فورًا بعد التجميع ، اخترت "لا". من الضروري أيضًا اتباع المسار إلى الملف الدفعي ، على سبيل المثال C: \ Users \ yurev.admin \ AppData \ Roaming \ libreoffice6.2_sdk وضبط المسار إلى VCVARS32 باستخدام المقابض ، لقد فعلت ذلك من خلال متغير جديد.

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" 

تحتاج إلى اختيار مسار لعمق البت الخاص بك.

بعد تعيين متغيرات البيئة بنجاح ، سوف نتلقى الرسالة التالية:

صورة

يجب ألا يكون هناك أي تعليقات - سيؤثر ذلك على التجميع لاحقًا. ينتقل سطر الأوامر إلى Shell المعدة لوضع SDK.

نذهب أيضًا إلى الدليل مع حزم GNU (C: \ Program Files (x86) \ GnuWin32 \ bin) وإعادة تسمية رابط link.exe حتى لا يتم الخلط بينه وبين رابط Microsoft في المستقبل ، إذا لزم الأمر ، يمكننا دائمًا الاتصال به باسم جديد.

تجميع SDK


الخطوة التالية هي تجميع الرؤوس أو فئات (لجافا). بمفردها ، فإن SDK هي مجموعة من المكونات ذات الامتداد .idl ، والتي يتم تجميعها في كتل .udl ، والتي يتم تجميعها بدورها في سجل بالملحق .rdb.

في هذا الشكل ، بالطبع ، من المستحيل استخدامه ، ولكن الهدف من هذا النهج هو القدرة على كتابة المكونات الخاصة بك ، والتي يتم إضافتها بعد ذلك إلى الشجرة العامة.

خذ المشروع من مثال LibreOffice.

انتقل إلى دليل C: \ App \ Libreoffice6.2.4.2x64 \ sdk \ أمثلة \ cpp \ complextoolbarcontrols وقم بتنفيذ الأمر.

إذا تم إدخال البيانات في الخطوة الأولى بشكل صحيح وتم تعيين متغيرات البيئة بشكل صحيح ، فسوف نرى

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

ويذهب التجميع ، نتيجة التجميع نحصل على:

  • الملفات التي تم تنزيلها في الدليل 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.

في الجوهر ، يقوم ملف Makefile بكل شيء بالنسبة لنا والذي أدخلنا فيه متغيرات البيئة بشكل صحيح.

يقوم Cppmaker ، استنادًا إلى ملفات التسجيل offapi.rdb و types.rdb ، بتنزيل التبعيات اللازمة لإنشاء ملفات cxx.

يجمع المترجم هذه الملفات في ملفات الكائنات ، ويعلق الرابط منها من دليل LibreOffice يجمع dll الإخراج ، ثم يتم إنشاء ملفات manifest.xml description.xml .components ويتم تجميع كل هذا معًا باستخدام zip في أرشيف .oxt. يجب التخلي عن

النسخة التي تحتوي على cigwin ( ويكي ) بسبب استحالة البناء بسبب وحدة التحكم المعلقة.

للبناء تحت Linux ستحتاج إلى:


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

لا تستهلك هذه الحزم مساحة كبيرة ، لذلك نستخدم صورة Docker لإنشاء الامتداد.

عملية التحضير تشبه تقريبا النافذة. بدلاً من setsdkenv_windows.bat ، قم بتشغيل setsdkenv_unix من / usr / lib / libreoffice / sdk.

بعد ذلك ، عن طريق القياس مع Windows ، انتقل إلى / usr / lib / libreoffice / sdk / أمثلة / cpp / complextoolbarcontrols وقم بتشغيل make.

نتيجة لذلك ، عند الانتهاء من التجميع ، سنحصل على الامتداد النهائي الذي يقع في الدليل المحدد أثناء التكوين من خلال setsdkenv_unix.

الروابط التي ساعدتنا



All Articles