کیوبیز (به انگلیسی: Qbs) یک نرمافزار آزاد و متنباز چند پلتفرمی برای مدیریت فرایند ساخت نرمافزار است. این برنامه برای پشتیبانی از پروژههای بزرگ و پیچیدهٔ نوشته شده توسط هر تعداد دلخواه از زبانهای برنامهنویسی و در درجهٔ اول سی و سیپلاسپلاس طراحی شدهاست.
کیوبیز یک ابزار همهکاره است که یک گراف ساخت را از توضیحات پروژه سطح بالا (مانند qmake قبلی خود) تولید میکند و علاوه بر این وظیفه اجرای دستورات در گراف ساخت سطح پایین (مانند ساخت) را بر عهده میگیرد.
کیوبیز ابتدا توسط نوکیا ایجاد شد و سپس کیوت کمپانی که آن را همراه با جعبه ابزار کیوتی خود توزیع کرد. با فریم ورک کیوتی ادغام شدهاست و ایجاد منابع moc (کامپایلر متا شئ) و rcc (کامپایلر منبع) را که در سیستم متا شی کیوتی و در یکپارچه سازی منابع باینری (مثلاً تصاویر) استفاده میشود، بهطور خودکار انجام میدهد.
ویژگیها
Qbs از این نظر منحصربهفرد است که هیچ مکانیزمی برای ساختهای درون منبع ندارد و توانایی ایجاد چندین ساختار از یک درخت منبع واحد را تضمین میکند، از جمله ساختن آنها از یک فراخوانی یک دستور و به صورت موازی. این یک ویژگی کلیدی است که تضمین میکند در صورت حذف یک فهرست ساخت، فایلهای منبع بیتأثیر باقی میمانند و هیچ خروجی مصنوعی ای، در فهرست منبع نوشته نمیشود.
Qbs هیچ پشتیبانی داخلی ای برای هیچ زبان برنامهنویسی، جعبه ابزار یا کتابخانه خاصی ندارد. این دوباره برخلاف qmake است که کدهای سخت از بسیاری از ابزارها و گردشهای کاری مرتبط با Qt پشتیبانی میکنند. در عوض، Qbs با مجموعهای از ماژولهای نوشته شده به زبان QML و جاوا اسکریپت ارائه میشود که پشتیبانی از انواع زبانها و ابزارهای برنامهنویسی را ممکن میسازد. Qbs در حال حاضر ماژولهایی را ارائه میکند که از Android SDK و NDK، C , C++، Java , NSIS، TypeScript , WiX، Xcode و انواع ابزارهای دیگر پشتیبانی میکنند.
Qbs میتواند برای پلتفرمهای بسیاری از جمله Android، FreeBSD، iOS، Linux، macOS , QNX، tvOS , watchOS، و Windows پروژهها را با پشتیبانی از برنامههای پلتفرم جهانی ویندوز ، INTEGRITY , VxWorks و دیگر پلتفرمهای در دست توسعه بسازد.
Qt Creator پشتیبانی داخلی Qbs را فراهم میکند و یکپارچه سازی IDE برای ویژوال استودیو توسط ویژگی تولیدکنندهها ارائه میشود. پشتیبانی از Xcode در حال حاضر در حال توسعه است.
فرایند ساخت
فرایند ساخت در Qbs در دو مرحله انجام میشود. اول، نمودار ساخت با خواندن فایلهای پیکربندی پروژه و محاسبه مجموعه ای از ورودی و خروجی گرهها و وابستگیهای بین آنها، گراف جهت دار بدون دور ایجاد میشود. سپس مجری تمام دستورات لازم برای ایجاد فایلهای خروجی را به صورت موازی طبق قوانین وابستگی اجرا میکند.
هر پروژه ساخت شامل یک فایل گراف ساخت (*.bg) در مسیری است که Qbs نمایش سریالی فرمت گراف ساخت داخلی خود را ذخیره میکند. جداسازی این فایل و استفاده از اطلاعات ذخیره شده به Qbs اجازه میدهد تا پروژه را خیلی سریع حل کند و منجر به ساختهای افزایشی تقریباً در لحظه شود. حذف فایل Build graph باعث بازسازی کامل کل پروژه میشود. برخلاف Qbs ,Qmake به مهرهای زمانی فایلها در فهرست ساخت تکیه نمیکند و دستکاری در محتوای آن منجر به بازسازی اهداف نمیشود مگر اینکه از گزینه ی--check-outputs
استفاده شود. این به دلایل بهبود عملکرد انجام میشود زیرا در برخی از سیستم عاملها (مثلا Windows)، خواندن مُهرهای زمانی از سیستم فایل در مقایسه با خواندن آنها از فایل نمودار ساخت بسیار کند است.
مثال فایل کیوبیز
CppApplication {
name: "helloworld"
files: "main.cpp"
}
توسعهٔ کیوبیز در نوکیا در سال ۲۰۱۰ در پاسخ به نیاز به جایگزینی برای qmake آغاز شد. هدف طراحی کیوبیز ارائه منحنی یادگیری بسیار پایینتر، ادغام بهتر با IDEها و زبانی پایدار و قدرتمند با رفتار قابل پیشبینی است. کیوبیز ۱٫۰ در سال ۲۰۱۳ منتشر شد[۱] و توسط شرکت کیوتی در همان زمان تحت مدل حاکمیت پروژه کیوتی توسعه یافت. توسعه دهندگان امیدوار بودند که در نهایت کیوبیز را برای جایگزینی qmake به عنوان سیستم ساخت خود کیوتی تحت فشار قرار دهند. با این حال، در اکتبر ۲۰۱۸ به نفع qmake و/یا cmake[۲] در یک پست وبلاگی در ۷ اوت ۲۰۱۹، شرکت کیوتی بیان کرد که با شروع کیوتی ۶، cmake به سیستم استاندارد ساخت کیوتی تبدیل خواهد شد[۳] و محبوبیت بسیار زیاد cmake را به عنوان یک عامل ذکر کرد.[۳]
توسعهٔ کیوبیز توسط داوطلبان خارجی انجام شد، که از ژوئن ۲۰۲۰ هنوز بهطور فعال آن را تحت چتر پروژه کیوتی حفظ میکنند.[۴] اگرچه شرکت کیوتی اعلام کرد که توسعه بیشتر در کیوبیز را متوقف خواهد کرد، آنها متعهد شدند که زیرساختهای لازم را برای انتشار آینده کیوبیز توسط جامعه را فراهم کنند.[۲]
برنامههایی که از کیوبیز استفاده میکنند
منابع
- ↑ "qbs 1.0.0 released". The Qt Company. Retrieved 2016-06-02.
- ↑ ۲٫۰ ۲٫۱ "Deprecation of Qbs". www.qt.io.
- ↑ ۳٫۰ ۳٫۱ "Technical vision for Qt 6 - The next big release". www.qt.io.
- ↑ "GitHub - qbs/qbs: Modern build tool for software projects". GitHub.