Esitletud on Qbs 1.21 kogumisvahendite väljaanne. See on juba kaheksas väljaanne pärast Qt Company lahkumist projekti arendamisest, mille on ette valmistanud kogukond, kes on huvitatud Qbs-i arendamise jätkamisest. Qbs-i töötlemiseks on vajalik Qt sõltuvus, kuigi ise Qbs on mõeldud paljude projektide kogumise korraldamiseks. Qbs kasutab projekti kogumise stsenaariumide määratlemiseks lihtsustatud QML keelt, mis võimaldab määratleda piisavalt paindlikke kogumise reegleid, kus on võimalik ühendada väliseid mooduleid, kasutada JavaScripti funktsioone ja luua omapäraseid kogumise reegleid.
Qbs-i skriptikeel on kohandatud automaatseks genereerimiseks ja töötluseks integreeritud arenduskeskkondades. Lisaks sellele ei genereeri Qbs make-failide, vaid kontrollib otse, ilma vahekohtadeta, nagu make utiliit, kompilaatorite ja linkijate käivitamist, optimeerides build-protsessi kõigi sõltuvuste detailse graafi alusel. Projekti struktuuri ja sõltuvuste originaalandmete olemasolu võimaldab tõhusalt jaotada toimingute täitmist mitme lõime vahel. Suurte projektide puhul, mis koosnevad paljusid faile ja alamkaustu, võib Qbs-i kasutamisega toimunud uuesti buildimise efektiivsus ületada make'i oma mitu korda — uuesti buildimine toimub peaaegu hetkega ning ei sunni arendajat aega raiskama ootamisele.
Tuletame meelde, et 2018. aastal tegi Qt Company otsuse Qbs arendamise lõpetamise kohta. Qbs arenes välja qmake'i asendajana, kuid lõpuks otsustati kasutada CMake'i pikaajalise ehitusüsteemina Qt jaoks. Qbs-i arendamine on nüüd jätkuvalt iseseisva projektina, mida toetavad kogukonna ja huvitatud arendajate jõud. Arendamiseks kasutatakse endiselt Qt Company infrastruktuuri.
Qbs 1.21 peamised uuendused:
- Moodulite pakkujate mehhanism on ümber tehtud (mooduligeneraatorid). Raamistikes nagu Qt ja Boost on nüüd võimalik kasutada mitut pakkujat, määrata, millist pakkujat kasutada uue omaduse qbsModuleProviders abil ja määrata prioriteet erinevate pakkujate loodud moodulite valimiseks. Näiteks on võimalik määrata kaks pakkujat, "Qt" ja "qbspkgconfig", kusjuures esimene üritab kasutada kasutaja installatsiooni Qt (otsides qmake'i), ja kui sellist installatsiooni ei leita, üritab teine pakkuja kasutada süsteemi pakutavat Qt (kutsudes üles pkg-config): CppApplication { Depends { name: "Qt.core" } files: "main.cpp" qbsModuleProviders: ["Qt", "qbspkgconfig"] }
- Lisatud on teenusepakkuja «qbspkgconfig», mis asendab moodulite teenusepakkujat «fallback», mis üritas genereerida moodulit pkg-configi abil, kui vajalikku moodulit ei olnud genereeritud teiste teenusepakkujate poolt. Erinevalt «fallback’ist» kasutab «qbspkgconfig» utiliidi pkg-config asemel sisseehitatud C++ raamatukogu, et otse lugeda «.pc» faile, mis võimaldab kiirendada tööd ja saada lisainfot pakettide sõltuvuste kohta, mis ei ole saadaval pkg-configi kasutamisel.
- Lisatud on C++23 spetsifikatsiooni tugi, mis määratleb tulevase C++ standardi.
- GCC tööriistadele on lisatud toetust Elbrus E2K arhitektuurile.
- Androidi platvormile on lisatud omadus Android.ndk.buildId, mis võimaldab ületada vaikeväärtuse linker’l flahile «—build-id».
- Moodulites capnproto ja protobuf on rakendatud võimalus kasutada runtime’i, mida pakub teenusepakkuja qbspkgconfig.
- Lahendatud on probleemid FreeBSD platvormil allikafailide muudatuste jälgimisel, mis tulenesid millisekundite eemaldamisest faili muutmise aja hindamisel.
- Lisatud on omadus ConanfileProbe.verbose, mis lihtsustab Conan paketihalduriga töötavate projektide tõrkeotsingut.
Täiendavalt võib märkida Qt 6.3 raamistikku, mille alpha-testimine on alanud. Selles on rakendatud uus moodul "Qt Language Server", mis toetab Language Serveri ja JsonRpc 2.0 protokolle. Qt Core moodulisse on lisatud suur hulk uusi funktsioone, Qt Quick Dialogs moodulisse on rakendatud QML-tüüpi MessageDialog platformi pakutavate dialoogide kasutamiseks ning Qt Wayland Compositoris on lisatud koostaja. server Qt Shell ja API, et luua oma kohandatud kasutajaliidese laiendusi.
Qt QML moodulis on pakutud qmltc (QML tüübi kompilaatori) rakendust, mis võimaldab QML objektistruktuure kompileerida C++ klassideks. Kaubanduslikele kasutajatele on alustanud Qt 6.3 toote Qt Quick Compiler testimist, mis lisaks ülaltoodud QML tüübi kompilaatorile sisaldab ka QML skripti kompilaatorit, mis võimaldab QML funktsioone ja väljendeid kompileerida C++ koodiks. Toodetakse, et Qt Quick Compileri kasutamine võimaldab QML-põhiste rakenduste jõudlust tuua lähemale natiivsetele programmidele, sealhulgas moodulite kompileerimise puhul täheldatakse käivitamise ja täitmise aega ligikaudu 30% võrra lühemana võrreldes interpreteeritava variandiga.
Allikas: opennet.ru
