<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Hola Jaime,<br>
<br>
veo que tienes un pequeño lío con el uso de CMake, lo cual es
normal, es una herramienta muy potente pero hace falta práctica
para domesticarla ;-).<br>
<br>
Como diría JM, aquí van mis dos centavos para que entiendas un
poco mejor esta herramienta, aunque te sugiero que le eches un
vistazo a su manual [1] donde te quedará todo más claro.<br>
<br>
El proceso de generación de un binario está dividido en dos
etapas, por una parte la compilación y por otra el enlazado. Para
la compilación es necesaria definir dónde se encuentran las
cabeceras (.h) donde están los símbolos que utilizas en tus
ficheros fuentes, con CMake ésto se define utilizando:<br>
<br>
include_directories()<br>
<br>
Según veo en tu sintaxis de tu CMakeLists.txt, has mezclado
directorios donde realmente se encuentran este tipo de ficheros:<br>
<br>
/usr/local/include/jderobot<br>
<br>
con directorios donde se encuentran librerías, y no cabeceras:<br>
<br>
/usr/local/lib<br>
<br>
mientras que el donde se encuentran las librerías forma parte del
enlazado y se indica de la siguiente manera:<br>
<br>
link_directories()<br>
<br>
Por último y para terminar el proceso (a parte de definir el
ejecutable) es necesario especificar de cuales librerías hace uso
tu aplicación, para ello tenemos:<br>
<br>
TARGET_LINK_LIBRARIES()<br>
<br>
Resumiendo, especificamos dónde están las cabeceras, dónde están
las librerías y qué librerías son necesarias.<br>
<br>
Si tratamos de seguir un patrón para todos los ficheros
CMakeLists.txt podemos dividir su definición en varias etapas:<br>
<br>
1) Definir los ficheros fuentes que conforman tu aplicación:<br>
<br>
</div>
<blockquote cite="mid:1361916346367-4641100.post@n4.nabble.com"
type="cite">
<pre wrap="">SET( SOURCE_FILES Printer.cpp Server.cpp)</pre>
</blockquote>
Bien hecho.<br>
<br>
2) Definir los directorios donde se encuentran las cabeceras
incluídas en tu aplicación. Puesto que tu aplicación hace uso de
ICE, es necesario especificar donde se encuentran las cabeceras de
estas librerías. Para facilitar la tarea de futuros programadores,
añadí en el repositorio un directorio llamado "Deps/" que incluye
una carpeta, "ice", donde se establecen de forma óptima todas las
rutas en las que se encuentra ICE en tu sistema, tanto cabeceras
como librerías. De tal forma que el código necesario para hacer uso
de ICE es:<br>
<br>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
<a
href="http://www.cmake.org/cmake/help/cmake2.6docs.html#command:set"
style="color: rgb(0, 0, 0); text-decoration: none; outline: none
!important; font-family: Consolas, monospace; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: 16.890625px; orphans: auto;
text-align: left; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span
style="color: rgb(31, 63, 129);">SET</span></a><span
style="font-family: Consolas, monospace; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: 16.890625px; orphans: auto;
text-align: left; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
color: rgb(25, 125, 139);">(</span><span style="color: rgb(128,
128, 128); font-family: Consolas, monospace; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: 16.890625px; orphans: auto;
text-align: left; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
background-color: rgb(248, 248, 248); display: inline !important;
float: none;"><span class="Apple-converted-space"> </span>DEPS_DIR<span
class="Apple-converted-space"> </span></span><span
style="color: rgb(128, 128, 128); font-family: Consolas,
monospace; font-size: 13px; font-style: normal; font-variant:
normal; font-weight: normal; letter-spacing: normal; line-height:
16.890625px; orphans: auto; text-align: left; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-size-adjust: auto;
-webkit-text-stroke-width: 0px; background-color: rgb(248, 248,
248); display: inline !important; float: none;"><span
class="Apple-converted-space"></span></span><span
style="font-family: Consolas, monospace; font-size: 13px;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: 16.890625px; orphans: auto; text-align: left;
text-indent: 0px; text-transform: none; white-space: normal;
widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;
-webkit-text-stroke-width: 0px; color: rgb(102, 102, 102);
font-style: italic;">#Directorio donde se encuentra la carpeta
Deps</span><span style="color: rgb(128, 128, 128); font-family:
Consolas, monospace; font-size: 13px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: 16.890625px; orphans: auto; text-align: left;
text-indent: 0px; text-transform: none; white-space: normal;
widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;
-webkit-text-stroke-width: 0px; background-color: rgb(248, 248,
248); display: inline !important; float: none;"></span><span
style="font-family: Consolas, monospace; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: 16.890625px; orphans: auto;
text-align: left; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
color: rgb(25, 125, 139);">)</span><span style="color: rgb(128,
128, 128); font-family: Consolas, monospace; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: 16.890625px; orphans: auto;
text-align: left; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
background-color: rgb(248, 248, 248); display: inline !important;
float: none;"><span class="Apple-converted-space"> </span></span><br>
<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
<a
href="http://www.cmake.org/cmake/help/cmake2.6docs.html#command:include"
style="color: rgb(0, 0, 0); text-decoration: none; outline: none
!important; font-family: Consolas, monospace; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: 16.890625px; orphans: auto;
text-align: left; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span
style="color: rgb(31, 63, 129);">include</span></a><span
style="font-family: Consolas, monospace; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: 16.890625px; orphans: auto;
text-align: left; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
color: rgb(25, 125, 139);">(</span><span style="font-family:
Consolas, monospace; font-size: 13px; font-style: normal;
font-variant: normal; font-weight: normal; letter-spacing: normal;
line-height: 16.890625px; orphans: auto; text-align: left;
text-indent: 0px; text-transform: none; white-space: normal;
widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;
-webkit-text-stroke-width: 0px; color: rgb(176, 128, 0);">${DEPS_DIR}</span><span
style="color: rgb(128, 128, 128); font-family: Consolas,
monospace; font-size: 13px; font-style: normal; font-variant:
normal; font-weight: normal; letter-spacing: normal; line-height:
16.890625px; orphans: auto; text-align: left; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-size-adjust: auto;
-webkit-text-stroke-width: 0px; background-color: rgb(248, 248,
248); display: inline !important; float: none;">/ice/CMakeLists.txt</span><span
style="font-family: Consolas, monospace; font-size: 13px;
font-style: normal; font-variant: normal; font-weight: normal;
letter-spacing: normal; line-height: 16.890625px; orphans: auto;
text-align: left; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
color: rgb(25, 125, 139);">)</span><br>
<br>
Al igual ocurre con gearbox, OpenCV y otras dependencias que puedes
encontrar ya resueltas en ese directorio.<br>
<br>
Para aquellas cabeceras que no están ya definidas en el directorio
"Deps/", debes incluir la ruta de donde se encuentran haciendo uso,
como ya he citado, de la sentencia:<br>
<br>
include_directories(<br>
/usr/local/include<br>
/usr/local/include/jderobot<br>
#etc, etc<br>
<span style="color: rgb(128, 128, 128); font-family: Consolas,
monospace; font-size: 13px; font-style: normal; font-variant:
normal; font-weight: normal; letter-spacing: normal; line-height:
16.890625px; orphans: auto; text-align: left; text-indent: 0px;
text-transform: none; white-space: normal; widows: auto;
word-spacing: 0px; -webkit-text-size-adjust: auto;
-webkit-text-stroke-width: 0px; background-color: rgb(248, 248,
248); display: inline !important; float: none;"></span> )<br>
<br>
3) Definir donde se encuentran las librerías de las que vas a hacer
uso. En este caso ocurre como en el punto 2), si has hecho uso del
directorio Deps/ para alguna dependencia no será necesario
especificar nada, si por el contrario debes especificarlo a mano:<br>
<br>
link_directories(<br>
/usr/local/lib<br>
/usr/local/lib/jderobot<br>
# etc, etc<br>
)<br>
<br>
4) Definir el ejecutable a partir de los ficheros fuentes fijados en
el paso 1):<br>
<br>
<blockquote cite="mid:1361916346367-4641100.post@n4.nabble.com"
type="cite">
<pre wrap="">add_executable (server ${SOURCE_FILES})
</pre>
</blockquote>
<br>
5) Especificar las librerías de las que vas a hacer uso. Nuevamente,
si has hecho uso del directorio Deps/, las librerías de ICE quedan
almacenadas en una variable (ZeroCIce_LIBRARIES<span style="color:
rgb(176, 128, 0); font-family: Consolas, monospace; font-size:
13px; font-style: normal; font-variant: normal; font-weight:
normal; letter-spacing: normal; line-height: 16.890625px; orphans:
auto; text-align: left; text-indent: 0px; text-transform: none;
white-space: normal; widows: auto; word-spacing: 0px;
-webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;
background-color: rgb(248, 248, 248); display: inline !important;
float: none;"></span>), con lo que simplemente hará falta incluir
esta variable en la sentencia "TARGET_LINK_LIBRARIES". Te dejo un
ejemplo de como especificar que tu ejecutable hace uso de ICE y de
otra librería que hay que especificar manualmente:<br>
<br>
TARGET_LINK_LIBRARIES(<br>
/usr/local/lib/jderobot/libcolorspacesmm.so # Añadida
manualmente<br>
${ZeroCIce_LIBRARIES<span style="color: rgb(176, 128, 0);
font-family: Consolas, monospace; font-size: 13px; font-style:
normal; font-variant: normal; font-weight: normal; letter-spacing:
normal; line-height: 16.890625px; orphans: auto; text-align: left;
text-indent: 0px; text-transform: none; white-space: normal;
widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto;
-webkit-text-stroke-width: 0px; background-color: rgb(248, 248,
248); display: inline !important; float: none;"></span>} # Añadida
haciendo uso de la variable<br>
)<br>
<br>
Bueno, espero que mi sermón te sirva de ayuda para entender un poco
mejor la herramienta CMake y te ayude en tus futuras compilaciones
:-).<br>
<br>
Un saludo.<br>
<br>
Mikel.<br>
</body>
</html>