<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'><div dir='ltr'>
debes de buscar en la documentacion de cmake no tengo cmeke pero con g++ las intrucciones son<div>g++ -c foo.cpp</div><div>compilas foo generas archivo objeto foo.o</div><div>g++ -o  main  main.cpp  foo.o</div><div>haces el enlace y compilas generas main</div><div>modifica esto #include "foo.h" en foo.cpp y main.cpp suponiendo que estan en el mismo directorio</div><div>espero te sirva</div><div><br><div><hr id="stopSpelling">From: asdrubal.ivan.suarez.rivera@gmail.com<br>Date: Wed, 30 Nov 2011 10:04:35 -0430<br>To: cconclase@listas.conclase.net<br>Subject: Re: [C con Clase] Pregunta Newbie con respecto a CMake<br><br>Correcto Steven, eso lo sé... La cuestión es que la función ya la tengo definida en foo.cpp y he revisado la cabecera y está correcta, fíjate:<div><br></div><blockquote class="ecxwebkit-indent-blockquote" style="border:none;padding:0px">

<div>foo.h:</div><div><br></div><div><div>#ifndef FOO_H</div></div><div><div>#define FOO_H</div></div><div><div><br></div></div><div><div>void algo();</div></div><div><div><br></div></div><div><div>#endif</div></div><div>

<div><br></div></div><div><div>foo.cpp:</div></div><div><div><br></div></div><div><div><div>#include <foo.h></div></div></div><div><div><div>#include <iostream></div></div></div><div><div><div><br></div></div>

</div><div><div><div>void algo()</div></div></div><div><div><div>{</div></div></div><div><div><div><span class="ecxApple-tab-span" style="white-space:pre">   </span></div></div>std::cout<<"algo";</div><div><div>

<div>}</div></div></div><div><div><br></div></div><div><div>main.cpp</div></div><div><div><br></div></div><div><div><div>#include <iostream></div></div></div><div><div><div>#include <foo.h></div></div></div><div>

<div><div><br></div></div></div><div><div><div>int main(int argc, char **argv) {</div></div></div><div><div><div>    algo();</div></div></div><div><div><div>    return 0;</div></div></div><div><div><div>}</div></div></div>

</blockquote><div><br></div><div>Creo sinceramente que no hay errores ahí. La cuestión es que quiero hacer que el CMake me enlace el foo.o y main.o para crear el main. Usando makefile me compila normalmente, sin embargo quiero, para aprender a usar CMake hacer lo mismo usando el CMake, valga la redundancia.</div>

<div><br></div><div>Saludos!</div><div><br><div class="ecxgmail_quote">El 30 de noviembre de 2011 08:56, Steven Davidson <span dir="ltr"><<a href="mailto:srd4121@njit.edu">srd4121@njit.edu</a>></span> escribió:<br><blockquote class="ecxgmail_quote" style="border-left:1px #ccc solid;padding-left:1ex">

Hola Asdrúbal,<br>
<br>
2011/11/30 Asdrúbal Iván Suárez Rivera <<a href="mailto:asdrubal.ivan.suarez.rivera@gmail.com">asdrubal.ivan.suarez.rivera@gmail.com</a>>:<br>
<div class="ecxim">> Tengo una pequeña duda usando el programa CMake, resulta que tengo 3<br>
> archivos, llamados<br>
><br>
> main.cpp<br>
> foo.h<br>
> foo.cpp<br>
><br>
> Me gustaría saber como puedo yo hacer que se me compile un archivo foo.o y<br>
> se enlace con un main.o, para que no el g++ no me dé un error del tipo<br>
> "undefined reference" al llamar alguna función desde el main que está<br>
> declarada en foo.h y definida en foo.cpp<br>
><br>
<br>
</div>Si el compilador/enlazador, "g++", te lanza un error, entonces<br>
deberías hacer caso de tal error y no intentar eludirlo. Este tipo de<br>
mensaje es del enlazador, ya que no encuentra la función que quieres<br>
usar. Sin ver el código fuente, no te puedo decir si has cometido un<br>
error o no. Es posible que el prototipo en "foo.h" no es idéntico a la<br>
implementación en "foo.cpp". Por ejemplo,<br>
<br>
// foo.h<br>
<br>
int suma( int, int );<br>
<br>
<br>
// foo.cpp<br>
<br>
#include "foo.h"<br>
<br>
float suma( float a, float b )<br>
{<br>
  return a+b;<br>
}<br>
<br>
Y luego, en "main.cpp":<br>
<br>
#include <iostream><br>
#include "foo.h"<br>
<br>
int main()<br>
{<br>
  std::cout << suma( 4, 2 ) << std::endl;<br>
<br>
  return 0;<br>
}<br>
<br>
Aquí, el enlazador te marcará un error de un uso o referencia sin<br>
definir para 'suma(int,int)'. El compilador no te marca ningún error,<br>
porque gramaticalmente todo es correcto, pero lógicamente no, ya que<br>
'float suma( float, float )' no es lo mismo que 'int suma( int, int<br>
)'.<br>
<br>
<br>
Espero que esto te oriente.<br>
<br>
Steven<br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div>Asdrúbal Iván Suárez Rivera<br></div><br><i>El éxito de alguien que enseña no es que sepa mucho, sino que lo poco que sabe lo sepa hacer llegar.</i><br><br>


</div>
<br>_______________________________________________
Lista de correo Cconclase Cconclase@listas.conclase.net
http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ</div></div>                                     </div></body>
</html>