[C con Clase] Pregunta Newbie con respecto a CMake

Israel Alberto Roldan Vega israel.alberto.rv en gmail.com
Mie Nov 30 21:15:14 CET 2011


Por cierto, la referencia la tome de este link y después de buscar en
muchos sitios.

http://eris.liralab.it/yarpdoc/using_cmake.html


Saludos,
Israel Alberto RV



El 30 de noviembre de 2011 14:13, Israel Alberto Roldan Vega <
israel.alberto.rv en gmail.com> escribió:

> Solucionado el problema:
>
>
> En el archivo CMakeLists.txt:
>
> cmake_minimum_required(VERSION 2.8)
> project(sourcetohtml)
> add_library(foo foo.cpp foo.h)
> add_executable(sourcetohtml main.cpp)
> target_link_libraries(sourcetohtml foo)
>
>
> En el archivo main.cpp y foo.cpp cambia:
>
> #include <foo.h>
> por
> #include "foo.h"
> //Error, cuando usamos librerias que creamos nosotros o includes que
> creamos nosotros, se usan comillas.
>
> Te adjunto los archivos para que los puedas probar.
> Ademas te anexo unas lineas de código que puedes correr en Linux para
> compilar mas rápido.
>
> cd problemaCMake2
> mkdir build
> cd build
>
> Para compilar dentro de la carpeta de build:
> clear && rm * -Rf && cmake .. && make && ./sourcetohtml
>
>
>
> Saludos,
> Israel Alberto RV
>
>
>
> El 30 de noviembre de 2011 09:26, Asdrúbal Iván Suárez Rivera <
> asdrubal.ivan.suarez.rivera en gmail.com> escribió:
>
> Como no, aquí se los envío, de todas formas los copié antes. Compilando
>> con g++ archivo por archivo a objeto no me da ningún error
>>
>> fíjense los comandos que ejecuto
>>
>> g++ foo.cpp -c -I.
>> g++ main.cpp -c -I.
>> g++ main.o foo.o -o main
>>
>> Eso compila sin problema, ahora bien, usando el CMake me da error de
>> undefined reference, les envío ahí en el tar.gz el CMakeLists.txt
>>
>> Saludos
>>
>> El 30 de noviembre de 2011 10:22, Israel Alberto Roldan Vega <
>> israel.alberto.rv en gmail.com> escribió:
>>
>> Nos podrías enviar de favor los códigos fuentes para probarlos en mi
>>> computadora y poderte decir cual es el error.
>>>
>>> O la otra opción es que seas muy descriptivo y copies
>>> todo, código fuente, errores, línea de código para compilar, etc.
>>> Es como si hubieras comprado una televisión y llegas a la tienda de
>>> donde la compraste, y la devuelves. Dices "es que no sirve", ellos te
>>> pregunten "porque no sirve, no prende, no se ve bien la imagen", y
>>> tu dijeras "Ha pues porque no sirve mire las entradas de atrás". Realmente
>>> no se dio una explicación del problema, algo que nos ayude a ayudarte.
>>>
>>>
>>>
>>> Saludos,
>>> Israel Alberto RV
>>>
>>>
>>>
>>> El 30 de noviembre de 2011 08:34, Asdrúbal Iván Suárez Rivera <
>>> asdrubal.ivan.suarez.rivera en gmail.com> escribió:
>>>
>>> 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:
>>>>
>>>> foo.h:
>>>>
>>>> #ifndef FOO_H
>>>> #define FOO_H
>>>>
>>>> void algo();
>>>>
>>>> #endif
>>>>
>>>> foo.cpp:
>>>>
>>>> #include <foo.h>
>>>> #include <iostream>
>>>>
>>>> void algo()
>>>> {
>>>> std::cout<<"algo";
>>>> }
>>>>
>>>> main.cpp
>>>>
>>>> #include <iostream>
>>>> #include <foo.h>
>>>>
>>>> int main(int argc, char **argv) {
>>>>     algo();
>>>>     return 0;
>>>> }
>>>>
>>>>
>>>> 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.
>>>>
>>>> Saludos!
>>>>
>>>> El 30 de noviembre de 2011 08:56, Steven Davidson <srd4121 en njit.edu>escribió:
>>>>
>>>> Hola Asdrúbal,
>>>>>
>>>>> 2011/11/30 Asdrúbal Iván Suárez Rivera <
>>>>> asdrubal.ivan.suarez.rivera en gmail.com>:
>>>>> > Tengo una pequeña duda usando el programa CMake, resulta que tengo 3
>>>>> > archivos, llamados
>>>>> >
>>>>> > main.cpp
>>>>> > foo.h
>>>>> > foo.cpp
>>>>> >
>>>>> > Me gustaría saber como puedo yo hacer que se me compile un archivo
>>>>> foo.o y
>>>>> > se enlace con un main.o, para que no el g++ no me dé un error del
>>>>> tipo
>>>>> > "undefined reference" al llamar alguna función desde el main que está
>>>>> > declarada en foo.h y definida en foo.cpp
>>>>> >
>>>>>
>>>>> Si el compilador/enlazador, "g++", te lanza un error, entonces
>>>>> deberías hacer caso de tal error y no intentar eludirlo. Este tipo de
>>>>> mensaje es del enlazador, ya que no encuentra la función que quieres
>>>>> usar. Sin ver el código fuente, no te puedo decir si has cometido un
>>>>> error o no. Es posible que el prototipo en "foo.h" no es idéntico a la
>>>>> implementación en "foo.cpp". Por ejemplo,
>>>>>
>>>>> // foo.h
>>>>>
>>>>> int suma( int, int );
>>>>>
>>>>>
>>>>> // foo.cpp
>>>>>
>>>>> #include "foo.h"
>>>>>
>>>>> float suma( float a, float b )
>>>>> {
>>>>>  return a+b;
>>>>> }
>>>>>
>>>>> Y luego, en "main.cpp":
>>>>>
>>>>> #include <iostream>
>>>>> #include "foo.h"
>>>>>
>>>>> int main()
>>>>> {
>>>>>  std::cout << suma( 4, 2 ) << std::endl;
>>>>>
>>>>>  return 0;
>>>>> }
>>>>>
>>>>> Aquí, el enlazador te marcará un error de un uso o referencia sin
>>>>> definir para 'suma(int,int)'. El compilador no te marca ningún error,
>>>>> porque gramaticalmente todo es correcto, pero lógicamente no, ya que
>>>>> 'float suma( float, float )' no es lo mismo que 'int suma( int, int
>>>>> )'.
>>>>>
>>>>>
>>>>> Espero que esto te oriente.
>>>>>
>>>>> Steven
>>>>>
>>>>> _______________________________________________
>>>>> Lista de correo Cconclase Cconclase en listas.conclase.net
>>>>>
>>>>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>>>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Asdrúbal Iván Suárez Rivera
>>>>
>>>> *El éxito de alguien que enseña no es que sepa mucho, sino que lo poco
>>>> que sabe lo sepa hacer llegar.*
>>>>
>>>>
>>>> _______________________________________________
>>>> Lista de correo Cconclase Cconclase en listas.conclase.net
>>>>
>>>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>>
>>>
>>>
>>> _______________________________________________
>>> Lista de correo Cconclase Cconclase en listas.conclase.net
>>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>>
>>
>>
>>
>> --
>> Asdrúbal Iván Suárez Rivera
>>
>> *El éxito de alguien que enseña no es que sepa mucho, sino que lo poco
>> que sabe lo sepa hacer llegar.*
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20111130/157bc73f/attachment.html>


Más información sobre la lista de distribución Cconclase