إطلاق أدوات بناء Qbs 1.21 وبدء اختبار Qt 6.3

تم الإعلان عن إصدار أدوات البناء Qbs 1.21. هذا هو الإصدار الثامن منذ أن تركت شركة Qt تطوير المشروع، الذي أعده المجتمع المهتم بمواصلة تطوير Qbs. لبناء Qbs، تكون Qt مطلوبة بين التبعيات، على الرغم من أن Qbs نفسها مصممة لتنظيم تجميع أي مشروع. يستخدم Qbs نسخة مبسطة من لغة QML لتحديد البرامج النصية لبناء المشروع، مما يسمح لك بتحديد قواعد بناء مرنة إلى حد ما يمكنها توصيل الوحدات الخارجية، واستخدام وظائف JavaScript، وإنشاء قواعد بناء مخصصة.

تم تكييف لغة البرمجة النصية المستخدمة في Qbs لأتمتة إنشاء البرامج النصية وتحليلها بواسطة IDEs. بالإضافة إلى ذلك ، لا يُنشئ Qbs ملفات makefiles ، وهو نفسه ، بدون وسطاء مثل الأداة المساعدة make ، يتحكم في إطلاق المجمعين والرابطات ، ويحسن عملية الإنشاء استنادًا إلى رسم بياني مفصل لجميع التبعيات. يسمح لك وجود البيانات الأولية حول الهيكل والتبعيات في المشروع بالتوازي بشكل فعال مع تنفيذ العمليات في العديد من سلاسل العمليات. بالنسبة للمشاريع الكبيرة التي تتكون من عدد كبير من الملفات والأدلة الفرعية ، يمكن لأداء إعادة البناء باستخدام Qbs أن يتفوق على الأداء عدة مرات - إعادة البناء تكاد تكون فورية ولا تجعل المطور يقضي وقتًا في الانتظار.

تذكر أنه في عام 2018 ، قررت شركة Qt التوقف عن تطوير Qbs. تم تطوير Qbs كبديل لـ qmake ، ولكن في النهاية تقرر استخدام CMake كنظام بناء رئيسي لـ Qt على المدى الطويل. استمر تطوير Qbs الآن كمشروع مستقل مدعوم من قبل قوى المجتمع والمطورين المهتمين. يستمر استخدام البنية التحتية لشركة Qt في التطوير.

الابتكارات الرئيسية في Qbs 1.21:

  • تمت إعادة تصميم آلية موفري الوحدات (مولدات الوحدات). بالنسبة لأطر العمل مثل Qt وBoost، أصبح من الممكن الآن استخدام أكثر من موفر واحد، وتحديد الموفر الذي سيتم تشغيله باستخدام خاصية qbsModuleProviders الجديدة، وتحديد أولوية لتحديد الوحدات النمطية التي تم إنشاؤها بواسطة موفري خدمات مختلفين. على سبيل المثال، يمكنك تحديد مزودين "Qt" و"qbspkgconfig"، سيحاول الأول منهما استخدام تثبيت Qt الخاص بالمستخدم (من خلال بحث qmake)، وإذا لم يتم العثور على مثل هذا التثبيت، فسيحاول المزود الثاني استخدام Qt الذي يوفره النظام (عبر استدعاء pkg-config): CppApplication { Depends { name: "Qt.core" } الملفات: "main.cpp" qbsModuleProviders: ["Qt"، "qbspkgconfig"] }
  • تمت إضافة موفر "qbspkgconfig"، الذي حل محل موفر الوحدة "الاحتياطية"، الذي حاول إنشاء وحدة باستخدام pkg-config إذا لم يتم إنشاء الوحدة المطلوبة بواسطة موفري خدمات آخرين. على عكس "الاحتياطي"، يستخدم "qbspkgconfig" بدلاً من استدعاء الأداة المساعدة pkg-config مكتبة C++ مدمجة لقراءة ملفات ".pc" مباشرة، مما يؤدي إلى تسريع العمل وتوفير معلومات إضافية حول تبعيات الحزمة غير المتوفرة عند استدعاء الأداة المساعدة pkg-config.
  • تمت إضافة دعم لمواصفات C++23، التي تحدد معيار C++ المستقبلي.
  • تمت إضافة دعم لبنية Elbrus E2K لمجموعة أدوات دول مجلس التعاون الخليجي.
  • بالنسبة لنظام التشغيل Android، تمت إضافة خاصية Android.ndk.buildId لتجاوز القيمة الافتراضية لعلامة الرابط "--build-id".
  • تنفذ وحدتي capnproto وprotobuf القدرة على استخدام أوقات التشغيل التي يوفرها موفر qbspkgconfig.
  • تم حل المشكلات المتعلقة بتتبع التغيير في الملفات المصدر على FreeBSD بسبب إسقاط المللي ثانية عند تقدير أوقات تعديل الملف.
  • تمت إضافة خاصية ConanfileProbe.verbose لتسهيل تصحيح أخطاء المشاريع التي تستخدم مدير الحزم Conan.

بالإضافة إلى ذلك، يمكننا أن نلاحظ بداية اختبار ألفا لإطار عمل Qt 6.3، الذي يطبق وحدة جديدة "Qt Language Server" مع دعم بروتوكولات Language Server وJsonRpc 2.0، وقد تمت إضافة جزء كبير من الوظائف الجديدة إلى Qt Core تم تنفيذ الوحدة النمطية، ونوع QML messageDialog في وحدة Qt Quick Dialogs لاستخدام مربعات الحوار التي يوفرها النظام الأساسي، تمت إضافة خادم Qt Shell المركب وواجهة برمجة التطبيقات (API) لإنشاء ملحقات shell المخصصة الخاصة بك إلى وحدة Qt Wayland Compositor .

توفر وحدة Qt QML تطبيقًا للمترجم qmltc (مترجم نوع QML)، والذي يسمح لك بتجميع بنيات كائنات QML في فئات في C++. بالنسبة للمستخدمين التجاريين لـ Qt 6.3، بدأ اختبار منتج Qt Quick Compiler، والذي، بالإضافة إلى مترجم نوع QML المذكور أعلاه، يتضمن مترجم QML Script، الذي يسمح لك بتجميع وظائف وتعبيرات QML في كود C++. تجدر الإشارة إلى أن استخدام Qt Quick Compiler سيجعل أداء البرامج المستندة إلى QML أقرب إلى البرامج الأصلية؛ على وجه الخصوص، عند تجميع الملحقات، هناك انخفاض في وقت بدء التشغيل والتنفيذ بنسبة 30٪ تقريبًا مقارنة باستخدام النسخة المفسرة .

المصدر: opennet.ru

إضافة تعليق