Qt Company strumento di costruzione (Qt Build Suite). Questa è l'ultima release di Qbs, sviluppata da Qt Company. Ricordiamo che in precedenza è stato di interrompere lo sviluppo di Qbs. Qbs è stato sviluppato come sostituzione di qmake, ma alla fine è stato deciso di utilizzare CMake come sistema principale di costruzione per Qt a lungo termine.
A breve si prevede la creazione di un progetto indipendente per continuare lo sviluppo di Qbs da parte della comunità, la cui sorte dipenderà dall'interesse per questo sistema di costruzione da parte degli sviluppatori indipendenti. Qt Company interrompe il lavoro su Qbs a causa della necessità di investimenti aggiuntivi e di alti costi per la promozione di Qbs.
Ricordiamo che per costruire Qbs è necessaria Qt come dipendenza, anche se Qbs stesso è progettato per gestire la costruzione di qualsiasi progetto. Qbs utilizza una versione semplificata del linguaggio QML per definire gli script di costruzione del progetto, consentendo di definire regole di costruzione abbastanza flessibili in cui possono essere collegati moduli esterni, utilizzare funzioni JavaScript e creare regole di costruzione personalizzate.
Qbs non genera file make e controlla autonomamente l'esecuzione dei compilatori e dei linker, ottimizzando il processo di costruzione sulla base di un grafo dettagliato di tutte le dipendenze. La disponibilità di dati iniziali sulla struttura e sulle dipendenze nel progetto consente di parallelizzare l'esecuzione delle operazioni in più thread.
Novità principali di Qbs 1.13:
- È stata aggiunta la possibilità di utilizzare nei progetti moduli pkg-config con lo stesso meccanismo di gestione delle dipendenze utilizzato per i moduli Qbs. Ad esempio, se nel sistema è presente un pacchetto per la costruzione di OpenSSL basato su pkg-config, è sufficiente aggiungere 'Depends { name: "openssl" }' per utilizzarlo nel progetto Qbs;
- È stata implementata l'individuazione automatica dei moduli Qt disponibili. Gli sviluppatori non devono più creare un profilo con i percorsi dei moduli tramite il comando setup-qt, tutti i moduli Qt indicati nelle dipendenze saranno configurati automaticamente;
- Sono stati aggiunti strumenti per controllare il numero di operazioni di build avviate in parallelo a livello delle singole squadre. Ad esempio, durante l'esecuzione del link si crea un grande carico su input/output e viene consumato un notevole quantitativo di RAM, pertanto il linker richiede impostazioni di avvio diverse rispetto al compilatore. Le impostazioni separate possono ora essere specificate utilizzando il comando «qbs —job-limits linker:2,compiler:8»;
- Sono state apportate modifiche al linguaggio di script. Le regole possono ora essere definite senza specificare un file segnaposto per l'output, e all'inizio dei file di progetto non è necessario utilizzare la direttiva «import qbs». Sono state aggiunte nuove proprietà install e installDir agli elementi Application, DynamicLibrary e StaticLibrary per facilitare l'installazione dei file eseguibili;
- Aggiunta la supporto per la scansione ricorsiva degli script del linker
GNU linker; - Per il linguaggio C++ è stata implementata la proprietà cpp.linkerVariant per forzare l'uso dei linker ld.gold, ld.bfd o lld;
- Per Qt è stata presentata la proprietà Qt.core.enableBigResources per la creazione di grandi risorse Qt
- Invece dell'elemento obsoleto AndroidApk, si consiglia di utilizzare il tipo generale Application;
- Aggiunto un modulo per la creazione di test basati su autotest;
- Aggiunto un modulo texttemplate con funzionalità simili a QMAKE_SUBSTITUTES in qmake;
- Aggiunto il supporto iniziale per il formato Protocol Buffers per C++ e Objective-C.
Fonte: opennet.ru
