Archivo de 1 de noviembre de 2008

Multiplataforma Real

Sábado, 1 de noviembre de 2008 por jorge

CMake es un generador de proyectos o Makefiles para diferentes plataformas. La idea es que tu código en C/C++ sea compilable en diferentes plataformas lo que normalmente suele implicar diferentes compiladores. En el mundo de C/C++ la batalla siempre está entre la cadena de herramientas gnu o los compiladores de Microsoft. Otra de sus ventajas es que permite compilar con facilidad en un directorio diferente del que contiene el código fuente. Esto es muy cómodo para realizar compilaciones cruzadas diferentes de un mismo código.

CMake permite generar makefiles para la cadena de herramientas GNU o proyectos de Visual C nativos. Pero su ventaja fundamental no es esta sino una biblioteca de scripts que permite resolver las dependencias del código que compilamos. Los que hayan entrado en este mundo en los tiempos de Ubuntu/APT y la instalación de paquetes automática quizá no sepan el terrible infierno que puede ser compilar un programa que depende de 5 librerías que a su vez depende de otras 5 que entran en conflicto entre sí.

Para crear un proyecto que compile con CMake lo único que hay que hacer es insertar un fichero de texto llamado “CMakeLists.txt” en cada directorio del proyecto que tenga archivos compilables.  Supongamos que queremos hacer un ejecutable que se llama Demo que depende de una librería que se llama Hello. El código de la librería y el ejecutable residen en los directorios Demo y Hello respectivamente.

El directorio de mayor nivel contiene el siguiente código:

# El nombre del proyecto es "HELLO". Los ficheros CMakeLists en este proyecto
# se refieren al direcotrio raíz del proyecto como ${HELLO_SOURCE_DIR} y
# al directorio raiz donde se almacenan los binarios como ${HELLO_BINARY_DIR}.
cmake_minimum_required (VERSION 2.6)
project (HELLO)


# Indicamos que cmake entren en dos subdirectorios Hello y Demo
add_subdirectory (Hello)
add_subdirectory (Demo)

El directorio Hello tiene el siguiente fichero CMakeLists.txt


# Crea un librería "Hello" que incluye el fichero "hello.cpp".
add_library (Hello hello.cpp)

El directorio Demo tiene el siguiente fichero CMakeLists.txt


# Definimos los ficheros de cabecera de la cabecera de la librería.
include_directories (${HELLO_SOURCE_DIR}/Hello)
# Definimos el lugar donde se encuentra el archivo de la librería.
link_directories (${HELLO_BINARY_DIR}/Hello)
# Creamos un ejecutable llamado helloDemo que se crea con los ficheros
# "demo.cpp" y "demo_b.cpp".
add_executable (helloDemo demo.cxx demo_b.cxx)
# Enlazamos el ejecutable con la librería Hello
target_link_libraries (helloDemo Hello)

Cuando ejecutamos cmake en el directorio raíz del proyecto automáticamente se genera un makefile o un proyecto de visual C nativo que podemos compilar con las herramientas correspondientes. En el caso de que nuestro proyecto dependa de una librería podemos usar una gran cantidad de scripts predefinidos para encontrarla. Por ejemplo si nuestro proyecto depende de la librería zlib podemos incluir en nuestro CMakeLists.txt

FIND_PACKAGE(ZLIB)

Esta línea busca la librería usando los macros predefinidos para la librería si la encuentra pone a nuestra disposición las variables

# ZLIB_INCLUDE_DIR - where to find zlib.h, etc.
# ZLIB_LIBRARIES - List of libraries when using zlib.
# ZLIB_FOUND - True if zlib found.

que luego podemos usar para compilar nuestro programa. Si cmake no encuentra las dependencias nos preguntará por su situación y rellenará las variables.

Su sencillez y su interfaz amistosa comparado con otras herramientas como automake/autoconf ha hecho que gane popularidad muy rápido y ha sido adoptado por grandes proyectos open source como KDE4 o OpenScenGraph. Desde mi punto de vista es una herramienta magnífica para compilar código opensource sobre windows.

VN:F [1.9.3_1094]
Rating: 0.0/5 (0 votes cast)

2geek2cook: jack o’lantern

Sábado, 1 de noviembre de 2008 por nera

Happy Halloween!

Aunque la fiesta de Halloween es una fiesta relativamente reciente en nuestro país, la hemos adoptado de forma muy natural (al igual que St Patrick, St Nicolas…), sin olvidarnos de los buñuelos de mañana. Calabazas amontonadas en los centros comerciales, fantasmitas de truco o trato por la urbanización, telas de araña en el Hollywood, brujas de escoba en las discotecas… definitivamente nos hemos de influenciar por las pelis.

Si, como yo, habéis comprado una calabaza…
jack o'lantern
…os dejo una receta sencilla para hacer con lo que habéis vaciado (está muy bueno).

250 gr de calabaza asada
1 sobre de levadura
70 ml de aceite de oliva
250 gr de azúcar
250 gr de harina
Mezclar los ingredientes. Hornear a 180º durante 20 minutos.

pastel de calabaza

VN:F [1.9.3_1094]
Rating: 0.0/5 (0 votes cast)