المقدمة
أثناء عملية تطوير منتج 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 \ sdkRun setsdkenv_windows.bat يقومهذا البرنامج النصي بإنشاء ملف دفعي للمستخدم على النظام لأول مرة ، ويطلب منك تسجيل المسارات إلى:- ليبر أوفيس
- LibreOffice SDK ؛
- أدوات غنو لبناء الحزم ، 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.الروابط التي ساعدتنا