Foi lançado o Qbs 1.21, a oitava versão desde que a Qt Company deixou o desenvolvimento do projeto, agora preparado pela comunidade interessada em continuar a evolução do Qbs. Para construir com Qbs, o Qt é uma das dependências, embora o próprio Qbs seja projetado para organizar a construção de qualquer projeto. O Qbs utiliza uma versão simplificada da linguagem QML para definir os scripts de construção do projeto, o que permite estabelecer regras de construção bastante flexíveis, com módulos externos, uso de funções JavaScript e criação de regras de construção personalizadas.
A linguagem de scripts utilizada no Qbs é adaptada para automatizar a geração e a análise dos scripts de compilação em ambientes de desenvolvimento integrados. Além disso, o Qbs não gera arquivos make, mas controla diretamente, sem intermediários, como a ferramenta make, a execução de compiladores e vinculadores, otimizando o processo de compilação com base em um gráfico detalhado de todas as dependências. A presença de dados iniciais sobre a estrutura e as dependências do projeto permite uma execução eficiente de operações em múltiplas threads. Para projetos grandes, compostos por muitos arquivos e subdiretórios, a performance da recompilação usando Qbs pode superar a do make em várias vezes — a recompilação é concluída quase instantaneamente e não faz o desenvolvedor perder tempo esperando.
Lembramos que, em 2018, a Qt Company decidiu interromper o desenvolvimento do Qbs. O Qbs foi desenvolvido como substituto do qmake, mas no final foi decidido usar o CMake como o sistema de compilação principal para o Qt a longo prazo. O desenvolvimento do Qbs agora é continuado na forma de um projeto independente, apoiado pela comunidade e por desenvolvedores interessados. A infraestrutura da Qt Company ainda é utilizada para o desenvolvimento.
Principais novidades do Qbs 1.21:
- O mecanismo de provedores de módulos (geradores de módulos) foi reformulado. Para frameworks como Qt e Boost, agora é possível usar mais de um provedor, definindo qual deles ativar com a nova propriedade qbsModuleProviders e atribuindo prioridade para escolha de módulos gerados por diferentes provedores. Por exemplo, é possível especificar dois provedores, ‘Qt’ e ‘qbspkgconfig’, sendo que o primeiro tentará usar a instalação personalizada do Qt (através da busca por qmake), e caso essa instalação não seja encontrada, o segundo provedor tentará usar o Qt fornecido pelo sistema (por meio da chamada ao pkg-config): CppApplication { Depends { name: ‘Qt.core’ } files: ‘main.cpp’ qbsModuleProviders: [‘Qt’, ‘qbspkgconfig’] }
- Adicionado o provedor ‘qbspkgconfig’, que substitui o provedor de módulos ‘fallback’, que tentava gerar um módulo usando pkg-config, caso o módulo procurado não tivesse sido gerado por outros provedores. Diferente do ‘fallback’, o ‘qbspkgconfig’ utiliza uma biblioteca C++ embutida para leitura direta dos arquivos ‘.pc’, acelerando o trabalho e obtendo informações adicionais sobre as dependências de pacotes que não estão disponíveis pela chamada ao utilitário pkg-config.
- Adicionada a suporte à especificação C++23, que define o futuro padrão do C++.
- Para o conjunto de ferramentas GCC, foi adicionada a suporte para arquitetura Elbrus E2K.
- Para a plataforma Android, foi adicionado a propriedade Android.ndk.buildId, que permite substituir o valor padrão para a flag do vinculador ‘—build-id’.
- Nos módulos capnproto e protobuf, foi implementada a possibilidade de uso do runtime fornecido pelo provedor qbspkgconfig.
- Resolvemos problemas de rastreamento de alterações em arquivos de código-fonte na plataforma FreeBSD, que surgiram devido ao descarte de milissegundos ao avaliar o tempo de modificação do arquivo.
- Adicionado o atributo ConanfileProbe.verbose, que facilita a depuração de projetos que utilizam o gerenciador de pacotes Conan.
Além disso, é possível notar o início dos testes alfa do framework Qt 6.3, que inclui um novo módulo 'Qt Language Server' com suporte aos protocolos Language Server e JsonRpc 2.0; o módulo Qt Core recebeu um grande número de novas funções, e no módulo Qt Quick Dialogs foi implementado o tipo QML MessageDialog para uso das janelas de diálogo fornecidas pela plataforma. No módulo Qt Wayland Compositor, foi integrado um compositor. servidor Qt Shell e API para criação de próprias extensões de interface do usuário.
No módulo Qt QML, foi proposta a implementação do compilador qmltc (compilador de tipo QML), que permite compilar estruturas de objetos QML em classes na linguagem C++. Para os usuários comerciais, a versão Qt 6.3 iniciou os testes do produto Qt Quick Compiler, que, além do mencionado QML Type Compiler, inclui o QML Script Compiler, permitindo compilar funções e expressões QML em código C++. Observa-se que a adoção do Qt Quick Compiler permitirá aproximar o desempenho de programas baseados em QML ao de programas nativos; especialmente na compilação de extensões, observa-se uma redução do tempo de inicialização e execução em aproximadamente 30% em comparação com a utilização da versão interpretada.
Fonte: opennet.ru
