[Aporte] Compilar SFML Estaticamente

Iniciado por MeCraniDOS, 9 Agosto 2013, 14:01 PM

0 Miembros y 1 Visitante están viendo este tema.

MeCraniDOS

Hola a todos, he hecho este tutorial con la intención de ayudar a los que no saben como instalar SFML, debido a que a mi me dio muchos errores la instalación.

Este tutorial consta de 50 imagenes perfectamente explicadas, para facilitar la instalación.

Bien, comencemos:

Lo primero será descargar el código fuente de SFML y CMake para compilar las Librerías

Codigo Fuente: http://www.sfml-dev.org/download/sfml/2.1/SFML-2.1-sources.zip

CMake: http://www.cmake.org/files/v2.8/cmake-2.8.11.2-win32-x86.exe







Una vez descargado, procedemos a la instalación de CMake como se muestra en las siguientes imágenes.









Una vez instalado, extraemos el contenido del zip "SFML-2.1-sources.zip", en C:// de la siguiente manera:





Se creará una carpeta llamada SFML-2.1, entramos en ella y creamos otra carpeta llamada "Build".



Abrimos CMake, ponemos las rutas de los códigos y del Build y le damos a "Configure".



Elegimos el compilador que usamos.



Seleccionamos la opción que he marcado y hacemos click en Next.



Copiamos la carpeta del compilador (MinGW) a C://.





Seleccionamos la ruta de gcc y g++, hacemos click en Finish, y después de esto, se pondrá a configurar, esperamos a que acabe.





Una vez configurado, desmarcamos todo y marcamos la ultima opción como en la imagen, y le volvemos a dar a Configure.



Hacemos click en generate y...



Listo, ya podemos cerrar CMake.



Apretamos Tecla Windows + R, para abrir Ejecutar, o Inicio -> Ejecutar, y escribimos cmd.



Navegamos por los directorios para llegar a la carpeta donde estaba la carpeta Build.



Una vez ahí, vamos a la carpeta de MinGW\bin, y copiamos todo el contenido en WINDOWS\System32, y no hacemos click en esa carpeta para luego poder borrar los archivos que me hemos copiado sin cambiar nada.





Finalmente, escribimos "mingw32-make" y se pondrá generar los archivos que van en la carpeta "lib".









Una vez generados, escribimos exit en la consola y ya podemos borrar el contenido de System32 que acabábamos de copiar.





Dentro de la carpeta Build, la unica que nos interesa es la carpeta lib.



La copiamos al escritorio junto con la carpeta include que esta en la carpeta SMFL-2.1 (saliendo de Build).



Renombramos la carpeta lib por SFML y la copiamos en la carpeta lib, de MinGW, en la ruta de instalación de Code::Blocks, y copiamos el contenido de la carpeta include (la del escritorio), a la carpeta de include de MinGW, en la ruta de instalación de Code::Blocks





Ya podemos cerrarlo todo y abrir Code::Blocks

Creamos un nuevo proyecto de Consola y seguimos los siguientes pasos.




Desmarcamos Debug y Finish.



Nos vamos a Build Options y hacemos exactamente lo siguiente.



Añadir SFML_STATIC, en Compiler Settings -> #defines



Vamos a Linker Settings y añadimos el contenido de la carpeta "lib" que hemos renombrado por "SFML", y que hemos puesto en la ruta de Code::Blocks



Lo añadimos todo.



Y quedará así.



Ahora lo renombramos hasta que quede ordenador así, tenemos que borrar de ahí el archivo "libsfml-main.a"



Una vez hecho, nos vamos a Search Directories, en Compiler añadimos la ruta de los include, que hemos copiado en la ruta de Code::Blocks



En Linker, copiamos la ruta de los lib, que hemos copiado en la ruta de Code::Blocks, y le damos OK.



Nos vamos a las propiedades del proyecto y seleccionamos GUI Application para que desaparezca la consola.



Una vez hecho eso, copiamos el siguiente código, y lo pegamos en nuestro main.cpp.

Código (cpp) [Seleccionar]
#include <SFML/Graphics.hpp>

int main()
{
   sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
   sf::CircleShape shape(100.f);
   shape.setFillColor(sf::Color::Green);

   while (window.isOpen())
   {
       sf::Event event;
       while (window.pollEvent(event))
       {
           if (event.type == sf::Event::Closed)
               window.close();
       }

       window.clear();
       window.draw(shape);
       window.display();
   }

   return 0;
}





Si todo es correcto, al apretar F9, saldrá una ventana así.



Cerramos la ventana y nos vamos a File->Save projecta as template.



Le ponemos el titulo que queramos, y le damos OK.



La plantilla se ha guardado con éxito.



Listo, ya tenemos SFML instalado en Code::Blocks, ahora cada vez que queramos usarlo, solo seleccionen la plantilla que hemos creado y a programar.

Espero que se entienda  :silbar: :silbar:

Saludos

Agradecimiento a amchacon, que fue él quien me lo explicó a mi.  ;-)
"La física es el sistema operativo del Universo"
     -- Steven R Garman

Danyfirex

Gracias Excelente Me sirvió.  ;-)

saludos

avesudra

Muchas gracias por el aporte y muy currado MeCraniDOS.

¡Un saludo!
Regístrate en

MeCraniDOS

Cita de: Danyfirex en  9 Agosto 2013, 14:41 PM
Gracias Excelente Me sirvió.  ;-)

saludos

Me alegro de que te sirva  :)

Cita de: avesudra en  9 Agosto 2013, 19:19 PM
Muchas gracias por el aporte y muy currado MeCraniDOS.

¡Un saludo!

De nada  ;-)
"La física es el sistema operativo del Universo"
     -- Steven R Garman

z3nth10n

#4
Hola, bueno pues tu tutorial no me ha gustado mucho que digamos hay muchas cosas mejorables como lo de copiar todo a System32... pero que me cuentas puto loco, usa batch:

Código (dos) [Seleccionar]
@echo off
cd C:/SFML-2.1/Build/
set PATH=%~dp0bin;%PATH%
mingw32-make


Y si ya se cual fue mi error tuve que crear otro profile para el compiler ya que, la carpeta que iba por defecto era la del Dev-C++ y me causa crashes aunque prefiero la de X3R4CK3R...

SFML 2.1 Totalmente compilado para x64 y x86: http://www.mediafire.com/download/4js1w91d75h31lq/SFML.rar (tmb os teneis que descargar el SFML de la pagina oficial esto es un plus, para que no tengáis que hacer todas las paripecias del Cmake...)

Librerías externas de MinGw para el que sea tan cafre como yo y no se las haya instalado con el CodeBlocks: http://www.mediafire.com/download/r0vux71nz0ti1mb/mingw-builds-install.exe

Ah! Aviso, Ctrl+F11 es vuestro amigo... Y por cierto, el que se haya instalado Dev-C++ antes que C::B y no le vaya el ejemplo que no se asuste, mirad los profiles de vuestros Compiladores en Settings > Compiler > Toolchain Compiler y mirais  si el Compiler installation directory es C:\Dev-C++ o cual es...

Ah! Y el paso ese de tener que añadir los paths de los linkers para luego ponerlo en sfml-graphics, audio etc, me parece una perdida de tiempo, al lado tienes "Other linker options" donde puedes poner esto:

Citar-lsfml-graphics-s -lsfml-window-s -lsfml-audio-s -lsfml-network-s -lsfml-system-s

y los con los directories siempre se puede crear variables Globales y luego poner $(#sfml64.lib) o .include o lo que quieras, aunque esto me lo ha enseñado X3R4... Si no te lo tomas a mal, tu turorial tiene muchas lagunas está al 60% terminado, podria hacer yo el 40% que le queda?

Un saludo.
Y disculpa y he sido grosero, pero es que llevo 4 ***** negros dias intentando instalar el SFML y nada... :-\

PD: Por este mini-tutorial dadle las gracias a XERACKER que fue quien me lo explicó a mí...

Ah! Y por cierto, Gracias por guiarme al menos para saber lo que tenía que hacer, aunque al final no haya hecho casi nada de este tutorial me ha servido para aprender que es el Linker y bueno el Compiler no tanto ya que sabia que era.. xD

Interesados hablad por Discord.

MeCraniDOS

Cita de: Ikillnukes en 18 Septiembre 2013, 17:46 PM
Hola, bueno pues tu tutorial no me ha gustado mucho

Porque no lo has seguido y no te ha funcionado   :silbar:

Cita de: Ikillnukes en 18 Septiembre 2013, 17:46 PM
PD: Por este mini-tutorial dadle las gracias a XERACKER que fue quien me lo explicó a mí...

Xera Mola!  ;-) ;-)
"La física es el sistema operativo del Universo"
     -- Steven R Garman

z3nth10n

Cita de: MeCraniDOS en 18 Septiembre 2013, 20:13 PM
Porque no lo has seguido y no te ha funcionado   :silbar:

Si que lo he seguido sí xDD Me lo he comido con papas.. xD

Interesados hablad por Discord.

MeCraniDOS

Cita de: Ikillnukes en 19 Septiembre 2013, 14:52 PM
Si que lo he seguido sí xDD Me lo he comido con papas.. xD

Por skype no decías eso  :rolleyes:
"La física es el sistema operativo del Universo"
     -- Steven R Garman

z3nth10n

Cita de: MeCraniDOS en 21 Septiembre 2013, 09:16 AM
Por skype no decías eso  :rolleyes:

Yo si decía eso... Lol... Bueno no se, decía mitad de las mitades de lo que yo había hecho, y creo que más de una vez te dije que el tutorial me lo había hecho y que el Cmake y todo eso me iba bien... :P

Interesados hablad por Discord.