Opa pessoal, com a ajuda de Adriano consegui fazer o projeto Cheese rodar na minha máquina (Linux), tudo pelo terminal. Utilizando apenas qmake, make e um editor de texto qualquer.
Fiz meio nas carreiras um tutorial aqui, tanto pra me ajudar no futuro (se eu me esquecer), quanto pro resto do pessoal que quiser trabalhar assim. Posso ter me enganado ou esquecido alguma coisa, pois só fiz pegar o history do meu terminal e tentar lembrar o passo-a-passo. Tentei explicar algumas coisas do Qt também, que aprendi hoje (Adriano me explicou), então posso cometer alguns erros, já que é tudo novidade para mim. Agradeço se alguém corrigir algo. Gostaria que o tutorial evoluísse mesmo.
Primeiro eu havia instalado o QtSDK (baixar em
http://qt.nokia.com/downloads)
O QtSDK traz com ele (além do Qt Creator) versões do Qt para o Desktop, para o Simulator (que simula celulares no Desktop), para Symbian e Madde (acho que isso também é uma plataforma).
Estas versões ficam na pasta do QtSDK
.
├── Changelog.txt
├── components.xml
├── debugger
├── Demos
├── Desktop
├── Documentation
├── Examples
├── InstallationLog.txt
├── Licenses
├── Madde
├── network.xml
├── QtCreator
├── QtSources
├── readme
├── SDKMaintenanceTool
├── SDKMaintenanceTool.dat
├── SDKMaintenanceTool.ini
├── Simulator
└── Symbian
Em cada pasta dessa em amarelo, existe uma estrutura de pastas parecida com a do Linux. A pasta do Simulator, por exemplo, você encontra isto:
Simulator/Qt/gcc/
├── bin
├── doc
├── harmattanthemes
├── imports
├── include
├── lib
├── mkspecs
├── plugins
├── qtc-qmldump
└── translations
A ideia é que em Simulator/Qt/gcc/bin você vai ter um qmake próprio do Simulator. Assim como em Simulator/Qt/gcc/include você vai ter os headers do Simulator (e não do Desktop) e assim vai.
Então quando você estiver compilando o seu jogo para o Simulator, você deve utilizar o qmake da pasta Simulator, e o Makefile deve utilizar os headers também desta pasta.
A princípio, minha ideia era instalar no sistema (movendo para /usr/bin/ , /usr/include/ , etc.) o conteúdo da pasta Simulator. Não sei nem se ia funcionar assim. Mas tem um jeito, que além de funcionar, é bem mais fácil.
Tem um script que Adriano me passou que facilita muito a vida. Ele configura o terminal para dar prioridade ao bin e include (entre outras coisas) que estão dentro do QtSDK, na pasta da plataforma que você escolher. Assim, quando eu chamar qmake no terminal, ele irá executar o qmake de QtSDK/Simulator/Qt/gcc/bin/ (se eu tiver escolhido o Simulator), assim como o gcc irá procurar os headers em QtSDK/Simulator/Qt/gcc/include, e assim sucessivamente.
Lá vai o script:
export QTDIR=/usr/local/Qt-5.0.0
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export LIBRARY_PATH=$QTDIR/lib:$LIBRARY_PATH
export QML_IMPORT_PATH=$QTDIR/imports/
export QML_PLUGIN_PATH=$QTDIR/plugins/
export PATH=$QTDIR/bin:$PATH
A ideia é você escolher a versão do Qt nessa variável QTDIR. No caso do Simulator, coloquei:
export QTDIR=/home/rodolfo/QtSDK/Simulator/Qt/gcc/
Você deve colocar esses comandos em um script.sh da vida, dar um "chmod u+x script.sh" e depois chamar "source script.sh". Se executar apenas ./script.sh não dá certo.
E aí, após o "source script.sh" meu terminal está configurado para desenvolver para o Simulator.
Ah. Para compilar e rodar o Cheese, preciso instalar o QmlBox2D e Expresso. Mas onde vai ser instalado? Se quero compilar o Cheese para o Simulator, preciso do QmlBox2D e Expresso instalados NO SIMULATOR! Se depois eu quiser compilar para o Desktop, vou precisar repetir os passos para instalar no Desktop.
No caso do Simulator, você precisa rodar o script.sh com QTDIR=/home/QtSDK/Simulator/Qt/gcc/. Depois é só seguir os passos do tutorial de Daker
http://blog.qtlabs.org.br/2011/06/13/qml-box2d/ : Baixa o projeto, dá qmake, make, e make install (não precisa de sudo, pois você tá instalando no /home/ onde está o QtSDK). Após isto, o QmlBox2d estará instalado na pasta Simulator do QtSDK.
Para o expresso, a mesma coisa.
(o expresso dependia do pacote libpulse-dev que também tive que instalar).
(Dica: durante o make, preste atenção na saída que aparece na tela, pare ver se os include-paths passados ao gcc estão realmente apontando para a pasta do Simulator. Se tudo estiver certo com o script.sh e mesmo assim os paths estiverem errados, cancele e dê um make clean antes de tudo. Se mesmo assim tiver com problemas, instale usando um shadow build. Na linha abaixo explico o que é isso. :))
Um truque interessante que Adriano ensinou foi o shadow build. Você pode ter um diretório com o seu projeto e compilá-lo em outro diretório. Assim você pode, por exemplo, criar uma pasta vazia "Desktop" dentro do seu projeto cheese, chamar o script.sh com QTDIR=/home/rodolfo/QtSDK/Desktop/Qt/4.8.1/gcc/, entrar na pasta cheese/Desktop e chamar
qmake ..
O .. serve para dizer ao qmake onde está o .pro do projeto. O qmake vai ler o Cheese.pro e gerar o Makefile no diretório atual (cheese/Desktop). Depois é só dar make, e executar sua versão Desktop do projeto! Depois você pode criar uma pasta cheese/Simulator, setar o QTDIR=/home/rodolfo/QtSDK/Simulator/Qt/gcc/, repetir os passos, e agora você tem duas subpastas no projeto Cheese, cada uma com um build para uma plataforma diferente.
Espero que não tenha ficado confuso, pessoal. É só uma versão inicial do que pode virar um tutorial.
Valeu galera.
Abraço,
Rodolfo