Compilar wxWidgets en mac

Decía ayer que wxWidgets podría ser una buena herramienta para desarrollar aplicaciones multiplataforma a partir de un único código fuente, quizás incluso mejor que QT ya que utiliza los controles nativos allí donde los haya.

WxWidgets es muy similar a MFC en cuanto a jerarquía de clases y a “concepto”, y de hecho el paso de una tecnología a la otra es mucho menos traumático que el paso, por ejemplo a QT. De wxWidgets se han dicho muchas cosas negativas. Que si no soporta excepciones, que si ocupa mucho tamaño, que si es muy complicada, y en general que tiene una arquitectura obsoleta.

Personalmente creo que ninguna de esas cosas es cierta, no al menos en el sentido en que se dice. Ciertamente su jerarquía de clases no tiene excepciones, pero nadie impide que las uses en tu código. Otra ventaja es que su API es genérica para todas las plataformas, y que tiene un montón de clases de soporte que nos evitan la compilación condicional. 

Por ejemplo, tenemos soporte directo para impresión, depuración, bases de datos, modelo documento/vista, arrastrar y soltar, ficheros de configuración, sincronización y threads, protocolos de red, OpenGL y hasta para la creación de diagramas…

Aparte existen varias herramientas de soporte, algunas de ellas realmente buenas aunque sean de pago. El problema es que sólo están disponibles para Windows, y tendremos que tener la clásica solución de una máquina virtual bajo OS X.

La única pega para desarrollar bajo MAC es que, hasta hace bien poco, el Framework estaba basado en Carbon (ya sabéis, el API de C de OS X que ya está obsoleto), pero la última versión, la 2.9.3 soporta compilar sobre Cocoa y 64 bits sin problema alguno.

Otra pega es que tenemos que compilarla nosotros, ya que sólo se distribuye en código fuente. Para Windows ya lo expliqué hace tiempo. De todos modos no es muy difícil una vez que has atinado con las opciones adecuadas.

***

Lo primero es bajarnos el tema, de aquí. Os recomiendo que elijáis la opcion de “With Unix line endings (for Unix and OS X). Yo lo he descomprimido en mi HOME, a partir de una carpeta que he llamado “wxWidgets”. Debemos entrar en ella, y una vez ahí, como en todo proyecto tipo Unix, configuramos la compilación:

 

./configure –with-cocoa –prefix=$HOME/wx –enable-stl –disable-shared –with-macosx-version-min=10.7 –with-macosx-sdk=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/

 

Una vez hayamos terminado, un simple make seguido de otro make install nos dejará el sistema listo y en producción.

***

Fijaos en las opciones que he elegido. “—With-cocoa” hace que se compile con el API de OS X actual, y con la de “—prefix” le estamos diciendo que use nuestro HOME para no enmarranar las carpetas del sistema operativo. Esto es muy útil porque si luego queremos desinstalarlo tendremos problemas.

Con “—disable-shared” le estamos diciendo que queremos las bibliotecas estáticas y no las dinámicas. Si vamos a poner alguna aplicación en la Tienda, es la mejor opción, ya que nuestro programa será un único ejecutable.

Y finalmente las dos últimas opciones. Yo he puesto Lion (10.7), pero vosotros podéis poner Snow Leopard (10.6). Si os fijáis, la ruta de los SDK ha cambiado en las últimas versiones de Xcode. Recordadlo para otras ocasiones.

Se me olvidaba comentar que necesitamos instalar las “Command Line Tools” para poder compilar cualquier cosa desde la consola de comandos. Abrimos Xcode, nos vamos a las Opciones (Command + 😉 y las seleccionamos de allí.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *