انتشار ابزارهای ساخت Qbs 1.21 اعلام شد. این هشتمین نسخه از زمان خروج شرکت Qt از توسعه پروژه است که توسط جامعه علاقه مند به ادامه توسعه Qbs تهیه شده است. برای ساخت Qbs، Qt در بین وابستگی ها مورد نیاز است، اگرچه Qbs خود برای سازماندهی مونتاژ هر پروژه طراحی شده است. Qbs از یک نسخه ساده شده از زبان QML برای تعریف اسکریپت های ساخت پروژه استفاده می کند، که به شما امکان می دهد قوانین ساخت نسبتاً انعطاف پذیری را تعریف کنید که می تواند ماژول های خارجی را به هم متصل کند، از توابع جاوا اسکریپت استفاده کند و قوانین ساخت سفارشی ایجاد کند.
زبان برنامه نویسی مورد استفاده در Qbs برای خودکارسازی تولید و تجزیه اسکریپت های ساخت توسط IDE ها اقتباس شده است. علاوه بر این، Qbs فایلهای make-files تولید نمیکند و خودش، بدون واسطههایی مانند ابزار 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" } file: "main.cpp" qbsModuleProviders: ["Qt", "qbspkgconfig"] }
- ارائهدهنده «qbspkgconfig» اضافه شد، که جایگزین ارائهدهنده ماژول «fallback» شد، که تلاش میکرد با استفاده از pkg-config یک ماژول تولید کند اگر ماژول درخواستی توسط سایر ارائهدهندگان تولید نشده بود. برخلاف "fallback"، "qbspkgconfig" به جای فراخوانی ابزار pkg-config از یک کتابخانه داخلی C++ برای خواندن مستقیم فایلهای ".pc" استفاده میکند، که سرعت کار را افزایش میدهد و اطلاعات بیشتری در مورد وابستگیهای بسته ارائه میکند که در هنگام فراخوانی در دسترس نیستند. ابزار pkg-config.
- پشتیبانی از مشخصات C++23 اضافه شده است که استاندارد آینده C++ را تعریف می کند.
- پشتیبانی از معماری Elbrus E2K برای جعبه ابزار GCC اضافه شده است.
- برای پلتفرم 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 برای ایجاد پسوندهای پوسته سفارشی شما به ماژول 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