Boa noite pessoal,
Estou escrevendo este post mais pelo intuito de revolta, da forma como a comunidade www.qt-project.org definiu o deploy dos programas... mas também para ajudar meu amigos programadores.
Para não ficarem sofrendo sem saber porque o programa não roda após liberarem o primeiro release.
Eu crirei um programa usando o Qt Creator 3.1.1 (versão Qt 5.2), algo bem básico, controlar alguma informações de preços, indíces e números de lojas em um arquivo xml, comparar essas informações com planilhas em excel e controlar um pequeno Banco de dados em SQLite.
Segue o link, caso alguns queiram baixar o código fonte, fuçar e comentar:
www.sourceforge.net (ótimo sistema de versionamento do site, recomendo)
https://svn.code.sf.net/p/doni/code/
Quem tiver uma conta no site posso liberar o acesso via SVN.
Bem, após terminar uma versão inicial, fui fazer o release do programa, liberar pro pessoal utilizar e reportar bugs. Lógico que algumas lib's teriam que ser copiadas para a pasta com o executável. E AQUI vem minha frustração, li um post no site do próprio Qt (qt-project.org) e eles recomandam copiar todas as libs presentes na instalação do Qt para a pasta contendo o executável.
Ou seja..
Coloquei o executável na pasta /Users/emanuel/Doni/
Copiar todo o conteúdo de /Users/emanuel/Qt/5.2/mingw_32/bin para /Users/emanuel/Doni/
Sim, o deploy foi para windows
E copiar a pasta /Users/emanuel/Qt/5.2/plugins para /Users/emanuel/Doni/
Ficamos com o diretório da seguinte forma:
/Users/emanuel/Doni/doni.exe
/Users/emanuel/Doni/*.dll
/Users/emanuel/Doni/plugins/*
Tudo isso dá um montante de 125MB... Um absurdo para mim!!! Um programinha de poucas funcionalidades ser deste tamanho! Só por causa de dependências. Se vocês utilizarem o Dependency Walker.exe (windows) ou o comando ldd (Linux) vão ver que as dependências estão todas lá.
Após fazer a cópia pode remover as libs com 'd' no final, pois são bibliotecas de debug.
E após ficar chateado com o fato de meu SIMPLES programa ter esse tamanho, obtive dois problemas e aqui vem minha contribuição para vocês programadores.
1)
Dependendo pra qual plataforma vocês vão desenvolver, no meu caso, fiz no meu Mac mas seria para usuários Windows. Tive que colocar uma biblioteca específica para windows, qwindows.dll, em uma pasta chamada platform/
Ou seja para cada plataforma tem o seu qwindows.dll e deve ser colocado na pasta plataform, se não o programa da erros e nem abre.
2)
O meu programa utiliza um drive para abrir o banco de dados SQLite. Após alguns dias sem entender o erro "DRIVER NOT LOADED" descobri que a biblioteca qsqlite.dll estava no lugar errado. Basta mover a pasta sqldrivers da pasta plugins para um diretório acima. Ficamos assim então:
/Users/emanuel/Doni/doni.exe
/Users/emanuel/Doni/*.dll
/Users/emanuel/Doni/plugins/*
/Users/emanuel/Doni/sqldrivers/*.dll
É isso ai pessoal,
espero que tenha ajudado e até a próxima.
Nenhum comentário:
Postar um comentário