Qt Company byggesæt (Qt Build Suite). Dette er den seneste udgave af Qbs, udviklet af Qt Company. Som en påmindelse, tidligere blev der taget en beslutning om at stoppe udviklingen af Qbs. Qbs blev udviklet som en erstatning for qmake, men det blev til sidst besluttet at bruge CMake som det primære build-system for Qt på lang sigt.
Der forventes snart oprettelse af et uafhængigt projekt til at fortsætte udviklingen af Qbs af fællesskabet, hvis skæbne vil afhænge af interessen for det pågældende build-system fra uafhængige udviklere. Qt Company stopper arbejdet med Qbs på grund af behovet for yderligere investeringer og store omkostninger ved promovering af Qbs.
Som en påmindelse kræver bygning af Qbs Qt som afhængighed, selvom Qbs er designet til at organisere bygningen af alle projekter. Qbs bruger en forenklet variant af QML-sproget til at definere bygningens scripts, hvilket gør det muligt at definere ret fleksible bygge-regler, som kan involvere eksterne moduler, bruge funktioner på JavaScript og oprette brugerdefinerede bygge-regler.
Qbs genererer ikke make-filer og kontrollerer selvstændigt kørsel af compilere og linker, idet den optimerer byggeprocessen baseret på en detaljeret graf over alle afhængigheder. Eksisterende data om strukturen og afhængighederne i projektet muliggør effektiv parallelisering af operationer i flere tråde.
De vigtigste nyheder i Qbs 1.13:
- Muligheden for at bruge pkg-config-moduler i projekter er blevet tilføjet ved hjælp af det samme afhængighedsbehandlingssystem, som anvendes til Qbs-moduler. For eksempel, når der findes en pakkefil til opbygning af OpenSSL baseret på pkg-config i systemet, er det tilstrækkeligt at tilføje 'Depends { name: «openssl» }' for at anvende det i Qbs-projektet;
- Automatisk identifikation af tilgængelige Qt-moduler er blevet implementeret. Udviklere behøver ikke længere at oprette en profil med stier til moduler ved hjælp af setup-qt-kommandoen; alle Qt-moduler nævnt i afhængighederne vil blive konfigureret automatisk;
- Der blev tilføjet midler til kontrol over antallet af parallelle kompileringer på niveauet for enkelte teams. For eksempel, når binding udføres, skabes der en høj belastning på input/output og der forbruges et betydeligt volumen RAM, derfor kræver linkeren andre opstartindstillinger end compileren. Separate indstillinger kan nu angives ved hjælp af kommandoen «qbs —job-limits linker:2,compiler:8»;
- Ændringer er foretaget i scriptsproget. Regler kan nu defineres uden at angive en placeholder-fil til output, og det er ikke længere nødvendigt at bruge direktivet «import qbs» i starten af projektfiler. Nye egenskaber install og installDir er tilføjet til elementerne Application, DynamicLibrary og StaticLibrary for lettere installation af eksekverbare filer;
- Support til rekursiv scanning af linkerscripts er blevet tilføjet
GNU linker; - For C++ er egenskaben cpp.linkerVariant implementeret for at tvinge brugen af linkere ld.gold, ld.bfd eller lld;
- For Qt er egenskapen Qt.core.enableBigResources introduceret for at oprette store Qt-ressourcer
- Den forældede AndroidApk-element anbefales nu at blive erstattet med den generelle type Application;
- Der er tilføjet en modul til at oprette tests baseret på autotest;
- Der er tilføjet en modul texttemplate med funktioner, der ligner QMAKE_SUBSTITUTES i qmake;
- Der er tilføjet tidlig support til formatet Protocol Buffers for C++ og Objective-C.
Kilde: opennet.ru
