qmake template

Escrever um buildsystem é sempre o primeiro passo (e algumas vezes o mais chato) ao começar um novo projeto de software. O Qt provê uma ferramenta própria para fazer com que uma única árvore de código possa ser compilada em todas as plataformas suportadas: o qmake. Ao invés de criar um projeto do qmake do zero para seu novo projeto, este template tem como objetivo lhe fornecer uma base sólida para seu buildsystem, atendendo a alguns requisitos básicos:

Shadow build – Chega de repositórios sujos após uma compilação. Compilar seu código dentro do repositório é opcional, você precisa apenas criar um diretório qualquer fora da sua árvore e chamar o script de configuração do seu projeto (configure). Existem várias situações onde isto é especialmente necessário: compilar a mesma árvore de código para diferentes plataformas ou quando seu código fonte está localizado em um storage lento (como um compartilhamento de rede ou uma partição criptografada).

Integração com testes automatizados – Desenvolvimento orientado a testes tem sido cada vez mais comum e provou ser uma importante ferramenta para detectar regressões. Este template provê mais do que um modo fácil de rodar seus testes (digitando “make check”), mas um relatório gráfico mostrando quão abrangentes seus testes são usando LCOV.

LCOV mostrando a cobertura dos unit tests

Documentação de código – Desenvolvedores em geral são preguiçosos se tratando de escrever documentos, a não ser que você lhes dê uma forma fácil de ver o o belo resultado de uma documentação bem escrita. Após digitar “make doc”, uma página HTML é automaticamente gerada agrupando toda a informação extraídas dos markups qdoc3 do seu código fonte.

Documentação extraída da classe Foobar

Internacionalização – Um buildsystem moderno precisa prover um jeito fácil para os tradutores atualizarem os arquivos de tradução. Precisamos ter em mente que tradutores não são necessariamente desenvolvedores e eles podem não gostar de ter que vasculhar o código fonte em busca de strings para tradução. Este template fornece uma integração com lupdate e lrelease – ferramentas i18n do Qt – criando todos os aquivos .ts necessários ao Qt Linguist.

Use o Qt Linguist para editar os arquivos de tradução

Fácil depuração – É meio óbvio que um buildsystem também deve gerar uma versão do software especial para depuração. Você também não precisa instalar esta versão no sistema para fazer testes (pelo menos no Linux).

Empacotamento – Seu software precisa ser de fácil distribuição. Adicionamos o suporte a empacotamento para Debian como exemplo neste template para demonstrar como é fácil fazer um pacote baseado neste buildsystem. Alguém anima contribuir com o empacotamento RPM?

Considerações finais

Só fiz testes deste template no Linux. Infelizmente algumas features só vão funcionar se você estiver usando GCC, como por exemplo a cobertura de código dos testes automatizados. :(

A última versão para download está disponível aqui. Você também pode navegar pelo repositório git do template. Lembre-se: patches e sugestões são sempre bem-vindos.

Mais instruções de uso (em inglês) no aquivo BUILD.

Postado em agosto 2, 2010 às 18:36 por Thiago · Link permanente
Em: artigo, desenvolvimento, en, nerd, pt_br · Com as tags: , ,

Deixe uma Resposta