Esta receta explica cómo compilar un Hola Mundo para el middleware ZeroC Ice utilizando CMake.

Software necesario

Puedes descargarte el software que se va a utilizar del siguiente repo subversion:
$ svn co https://arco.esi.uclm.es/svn/public/samples/cmake/hello_ice
En el repositorio se encuentra la implementación de un "Hola Mundo" para ZeroC Ice y el CMakeLists.txt asociado.

Herramientas externas

Un programa en Ice presenta un problema común: archivos que se generan con herramientas externas al proyecto son necesarios para la compilación. En Ice, slice2cpp genera código que debe ser incluido en la compilación. CMake proporciona un comando muy útil llamado ADD_CUSTOM_COMMAND y que permite definir cómo se generan ciertos objetivos. Utilizando este comando, veamos cómo quedaría el programa CMake para construir el Hola Mundo en Ice:
 
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(hello_ice)

FIND_LIBRARY(ice_lib Ice)
FIND_PATH(ice_path Ice)

IF(NOT ice_path)
  MESSAGE(FATAL_ERROR "** Librería de Ice no encontrada")
ENDIF()

# Variable con los slices necesarios
SET(SLICES ${CMAKE_CURRENT_SOURCE_DIR}/slice/hello.ice)

# slice2cpp
ADD_CUSTOM_COMMAND (
  OUTPUT hello.cpp hello.h
  COMMAND slice2cpp ${SLICES}
  )

INCLUDE_DIRECTORIES(
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_BINARY_DIR}  # slice2cpp deja el .h en el directorio en 'build'
  ${ice_path}
  )

ADD_EXECUTABLE(Client hello.cpp Client.cpp)
ADD_EXECUTABLE(Server hello.cpp helloI.cpp Server.cpp)
TARGET_LINK_LIBRARIES(Server ${ice_lib})
TARGET_LINK_LIBRARIES(Client ${ice_lib})
Al principio, se hacen unas liberas comprobaciones de que la librería de Ice existe. A continuación se define el comando slice2cpp diciendo que como salidas los ficheros hello.cpp y hello.h a partir del fichero Slice hello.ice. Los archivos de salida son dependencias de los distintos ejecutables que se deben crear. Finalmente, se enlaza con las librerías necesarias.

Referencias



blog comments powered by Disqus