genbetadev / Genbeta-Dev-Engine

Desarrollo de un Game Engine básico sobre C++ y SFML 2.1
MIT License
63 stars 32 forks source link

Usar CMake como build system. #14

Open edoren opened 10 years ago

edoren commented 10 years ago

Como se habló en el issue #7, se creará un build system en CMake para generar los proyectos en diferentes IDEs, actualmente CMake genera makefiles para Unix, Mac OS X, OS/2, MSVC, Cygwin, MinGW y XCode

adrigm commented 10 years ago

Recordad que los archivos deben quedar dentro de builds/cmake en la medida de lo posible. Si es necesario poner un CmakeList.txt en alguna carpeta, se pone, pero a último remedio siempre.

DavidBM commented 10 years ago

@edoren Nunca he tocado CMake más allá de conpilar SFML 2. Pero si necesitas ayuda, dimelo y me pongo con ello.

edoren commented 10 years ago

Ya casi termino de hacer el build system en CMake, aun así esta dispuesto a modificaciones en caso que se agreguen ciertas librerías y archivos de Código, mmm tengo que hacer una sugerencia con respecto a la estructura del proyecto, en ves de ser extlibs/libs-xcode que sea extlibs/libs-osx, es lo mismo yo se, pero daría un poco de claridad supongo, ya que en MacOSX la gente puede compilar el proyecto desde consola no necesariamente con XCode. Otra cosa, no he trabajado mucho con el compilador de visual así que no se si una librería creada con Visual 2008 por ejemplo sea compatible con Visual 2013 para no crear carpetas extlibs/libs-vc20**, sino hacer una extlibs/libs-msvc por ejemplo.

adrigm commented 10 years ago

@edoren En windows no son compatibles entre versiones de VC, o no suelen serlo. Del mismo modo que no es lo mismo compilar para Visual C++ que con mingw por lo que se necesitan dos carpetas.

En OSX bien pesado no debería dar problema se use xcode u otro IDE ya que ambos tiran de gcc, así que si no hay incompatibilidad mejor una carpeta llamada libs-osx

adrigm commented 10 years ago

Por cierto, que versión de SFML estás usando? Yo propongo usar la versión en desarrollo más que la 2.1. Las razones:

¿Como lo véis?

DavidBM commented 10 years ago

Por mi usemos la versión de desarrollo. Cuando usé la beta de la 2.0 era bastante estable salvo algunas cositas. Y esta es para corregir errores, así que supongo que será bastante estable.

edoren commented 10 years ago

Ando usando la de desarrollo, la intento mantenerla actualizada, así que no hay problema. Otra pregunta, las librerías del SFML se van a ser Estáticas y Dinámicas?

adrigm commented 10 years ago

@edoren Se supone que las dos, que debemos dar opción a usar las dos. Aunque yo por ahora estoy usando la versión dinámica y más adelante ya se configurará para que funcione también como estática.

edoren commented 10 years ago

Ok, no hay problema.

ficion commented 10 years ago

Yo soy un principiante y no sé mucho aún — igual pregunto. ¿Por qué CMake? ¿Por qué no otro sistema de builds como autotools?

edoren commented 10 years ago

Otra cosa, ya que entonces las librerías de VC no son compatibles, sera mejor separarlas por las versiones no?, en vez de ser extlibs/libs-vc2012 que sea extlibs/libs-vc12 ya que es la versión 12 del compilador, SFML soporta de la 8 que es Visual 2005 a la 12 que es Visual 2013.

edoren commented 10 years ago

@ficion CMake da la opción de generar Makefiles en varios OS, lo cual permite darle darle portabilidad al proyecto a otros sistemas, ademas que genera proyectos para diferentes IDEs como Codeblocks, XCode, Visual, etc. Autotools solo permite generar sistemas de builds para OS basados en Unix.

ficion commented 10 years ago

Ya veo. Aunque por lo que sé autotools debería funcionar en Windows también, pero quizá sólo lo haga a través de librerías como mingw32 o similares, supongo...

adrigm commented 10 years ago

@edoren usar tanto el año como le versión es indiferente ya que son inequívocos. A mi me da lo mismo uno que otro, pero debemos ser consistente con lo que elijamos.

edoren commented 10 years ago

@adrigm Si, claro, por eso pregunto, par así buscar las librerías en el lugar que es dependiendo del compilador de Visual que se este usando.

edoren commented 10 years ago

@ficion Si, en MinGW debería funcionar ya que este usa herramientas de Unix para hacer build, como el mingw32-make

adrigm commented 10 years ago

@edoren, yo no estoy muy puesto con cmake, pero viendo por encima veo que has añadido todos los archivos del proyecto que se deben añadir. Como vamos a estar añadiendo archivos continuamente (al menos al principio) no sería mejor decir que incluya todo el directorio? Creo que cmake tiene esa opción.

edoren commented 10 years ago

La verdad, no hay forma actualmente de hacerlo :S, estaba pensado también en ese problema. Intentaré buscar una solución.

adrigm commented 10 years ago

Fijándome en los archivos cmake de SFML, he visto esto:

# add the SFML sources path
include_directories(${PROJECT_SOURCE_DIR}/src)

No añade esto todo el directorio?

edoren commented 10 years ago

No, lo único que hace es decirle a CMake donde están los archivos de inclusión.

danigomez commented 10 years ago

Encontré una pregunta en stackoverflow sobre esto, quizá sirva: http://stackoverflow.com/a/3201211/1174201

2013/11/7 Manuel Fernando notifications@github.com

No, lo único que hace es decirle a CMake donde están los archivos de inclusión.

— Reply to this email directly or view it on GitHubhttps://github.com/genbetadev/Genbeta-Dev-Engine/issues/14#issuecomment-27956085 .

edoren commented 10 years ago

Si, ha funcionado, gracias. haré algunos cambios, como agregar opciones para Debug y como linkear SFML y hago un pull request. Después para cuando el proyecto ya este en una versión mas madura, recomendaría poner cada uno de los archivos Código dentro del CMake, así se daría mas claridad de los archivos que se estén usando.