-
Notifications
You must be signed in to change notification settings - Fork 0
For Developers (PT only)
Aqui se encontram informações sobre como compilar o tabuleiro, notas da arquitetura e protocolos.
O ambiente de compilação foi feito baseado em SCons. O código é todo escrito em C++(necessário suporte a C++11) e alguns arquivos em proto.
O tabuleiro virtual requer as seguintes bibliotecas:
- Qt 4.8
- Google Protocol Buffers
- Boost
- Glut.
Opcionalmente, pode-se usar também para logs:
- Google Glog.
O tabuleiro foi compilado no Linux, MacOS e Cygwin sem maiores problemas. No windows, usando MinGW32 foi mais complicado por causa das dependências. Todas as bibliotecas devem ser compiladas por MinGW, inclusive o QT. Eu tive problema com o plugin de GIF do QT, portando compilei o QT estaticamente.
Uma boa referência para compilar QT estaticamente: http://qt-project.org/wiki/How_to_build_a_static_Qt_version_for_Windows_with_gcc
Não é necessário compilar o QT todo: apenas QtOpenGL, QtGui e QtCore. Para compilar só esses componentes, pode-se usar:
make sub-core sub-opengl sub-gui sub-moc sub-rcc ou
make sub-tools-bootstrap sub-uic sub-moc sub-corelib sub-gui sub-opengl sub-rcc
No caso do boost, deve-se compilar system, filesystem, chrono, timer. Para compilar boost com mingw, devem-se fazer os seguintes comandos (dentro de um shell msys do mingw):
bootstrap mingw
./b2.exe toolset=gcc link=static variant=release threading=multi cxxflags=-std=c++0x address-model=32 filesystem system chrono timer
Eu compilei o conjunto de bibliotecas necessárias para a versão windows do programa. Descompacte este .zip na raiz do código fonte: https://drive.google.com/file/d/0B7clSIFMH9R-aGpJd2dzSnJoVEk/edit?usp=sharing
Também foi necessário mudar alguns cabeçalhos do MinGW, porque estavam causando erros de compilação:
include/time.h:129
//#ifndef STRICT_ANSI
#if 1
Crie um arquivo local.Sconscript com suas configurações locais. Exemplo de local.SConscript. O
Import('env')
env['PROTOC'] = '/usr/bin/protoc'
env['CXX'] = 'c:/MinGW/bin/g++.exe'
env['CPPPATH'] += [env['QT_CPPPATH'] + '/QtGui',
env['QT_CPPPATH'] + '/QtCore',
env['QT_CPPPATH'] + '/QtOpenGL',]
Veja NOTAS_*txt na raiz do fonte.