QMake vs. CMake

No sistema que desenvolvemos no GESEP, utilizamos C++, o Qt, como framework para interface gráfica e acesso à banco de dados, e como sistema de build o Qmake.

Como até agora nosso desenvolvimento ‘ad hoc’ sem utilizar ferramentas de controle de qualidade (mea culpa, mea maxima culpa!) o Qmake tem nos servido muito bem.

O Qmake é um sistema de build (na verdade ele gera os arquivos Makefile para compilar o projeto) desenvolvido pela Trolltech e é distribuida com o Qt. Ele é utilizado para construir o próprio Qt, o qual é um projeto gigante. Isso mostra o poder do Qmake.

Mas ele não satisfez uma necessidade nossa agora com a melhoria da qualidade do nosso software (depois eu post sobre integração continua e testes). No que o Qmake não satisfez foi nos casos de testes unitários.

Apenas para clarificar como é os nossos casos de teste, temos um projeto principal de dentro dele o código fonte dentro de uma pasta src e casos de testes dentro de uma pasta tests, sendo os casos divididos em subpastas (test_modulo1, test_modulo2). O objetivo que imagino é criar a mesma estrutura do código fonte e para cada classe criar uma pasta com código de teste.

O QMake consegue gerir vários subprojetos, como o executável principal e os diversos casos de teste, mas o problema reside em rodar todos casos de teste. É possível criar um script em shell, mas isso somente iria rodar no linux (nosso sistema é multiplataforma). Na lista do Qt existe uma solução mas não fiquei muito feliz (gambi :p ). Então escrevendo o meu sistema do TCC (códigos em github.com/wiglot/CCP) usei o kdevelop (e gostei muito:) ) para criar um projeto com casos de tests (usando o modulo do Qt para Unit test). Ele gera o projeto usando o CMake já com os casos de test. Achei o máximo, porque para rodar todos os testes basta digitar make test ou ainda ctest com várias opções de escolha dos testes.

Eu já tinha lido sobre o CMake quando estave tentando compilar o amarok tempo atrás e tinha achado bem interessante, principalmente pelo KDE ter trocado para ele depois de usarem o ‘auto-hells’, mas quando conheci o Qt e vi a facilidade do QMake não pensei em outro sistema de build.

Eu vou criar um branch no projeto e tentar trocar para o CMake já integrando com o Buildbot do grupo.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: