Compilar programas de C/C++ modo dios.

c-logoEste día escribiré sobre la compilación de script de C/C++ usando cmake, este método te ahorrara mucho trabajo y te automatizara la dura tarea de compilar dichos script. Además si quieres portar el programa no sera ningún problema por que el ejecutable lo puedes correr en cualquier plataforma.

Antes de iniciar te hablare un poco de cmake, que según la wikipedia lo describe en el siguiente texto.

CMake es una herramienta multiplataforma de generación o automatización de código. El nombre es una abreviatura para “cross platform make” (make multiplataforma); más allá del uso de “make” en el nombre, CMake es una suite separada y de más alto nivel que el sistema make común de Unix, siendo similar a las autotools.

CMake es una familia de herramientas diseñada para construir, probar y empaquetar software. CMake se utiliza para controlar el proceso de compilación del software usando ficheros de configuración sencillos e independientes de la plataforma. Cmake genera makefiles nativos y espacios de trabajo que pueden usarse en el entorno de desarrollo deseado. Es comparable al GNU build system de Unix en que el proceso es controlado por ficheros de configuración, en el caso de CMake llamados CMakeLists.txt. Al contrario que el GNU build system, que está restringido a plataformas Unix, CMake soporta la generación de ficheros para varios sistemas operativos, lo que facilita el mantenimiento y elimina la necesidad de tener varios conjuntos de ficheros para cada plataforma.

Para poder hacer uso de cmake es necesario instalar el mencionado paquete, que ya esta listo para instalar desde los repositorios oficiales de GNU/debian. Lo primero que debemos hacer es instalar cmake y todas sus herramienta que bastara con que lances el siguiente comando

apt-get install cmake

Para probar que todo salio bien verifica en consola la salida del siguiente comando

cmake --version

La salida que debes de obtener es como la siguiente

cmake version 3.4.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).

Continuamos a crear el entorno adecuado para compilar con cmake segun explico en los siguientes pasos

Paso 1: Crea un directorio en tu /home/$USER/test

mkdir /home/$USER/test

Paso 2: Ingresa al directorio antes creado

cd /home/$USER/test

Paso 3: En el directorio test crea el script de c++ según necesidad, pero en esta ocasión escribiremos el famoso hola mundo. Crea un script de nombre main.cpp

#include <iostream>

using namespace std;

int main ()
{
    cout << "Hello World!\n";

    return 0;
}

Paso 4: Una ves creado el scritpt, procedemos a crear el archivo que leerá cmake para tomar en cuenta al momento de compilar su nombre es CMakeLists.txt.  y inserta el siguiente texto

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(Test_aplicacion)
ADD_EXECUTABLE(hello main.cpp)

El contenido del archivo en la primera linea se solicita la versión mínima de cmake en este caso la versión, en la segunda linea es el nombre del proyecto y por ultimo el nombre del script a compilar y el nombre del ejecutable a construir

Paso 5: Crea el directorio donde se creara la estructura de tu proyecto

mkdir build

Ingresa al directorio antes creado

Paso 6: Ejecutar cmake para que cree la estructura del proyecto y lea el archivo CmakeList

cmake ..

Obtendrás una salida como la siguiente si todo salio bien, de lo contrario cmake saldrá con un error y te lo mostrara

udwin@zeus:~/cmake_test/build$ cmake ..
-- The C compiler identification is GNU 5.3.1
-- The CXX compiler identification is GNU 5.3.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ludwin/cmake_test/build

Paso 7: Haciendo make para compilar en el directorio build/

make

Tendrás que tener una salida como la siguiente

Ludwin@zeus:~/cmake_test/build$ make
Scanning dependencies of target hello
[ 50%] Building CXX object CMakeFiles/hello.dir/main.cpp.o
[100%] Linking CXX executable hello
[100%] Built target hello

Paso 8: Ejecutando el programa ya compilado

./hello

Al ejecutarlo la consola tendría que mostrar un mensaje con el típico Hello Word!

ludwin@zeus:~/cmake_test/build$ ./hello 
Hello World! 

Y eso es todo, recuerda que si haces cambios en el scrit main.cpp debes de borrar lo creado y recomplilar con el comando make clean all y veras que cuando ejecutes el programa este ya tendrá los cambios que agregaste, fácil no !!

Cabe mencionar que cmake tiene cientos de opciones las cuales las puedes consultar haciendo un man cmake en la terminal, y también la documentación de su pagina oficial  https://cmake.org/documentation/

En las próxima entrada estaré escribiendo sobre la compilación de programas en C++ usando la librería OpenGL y GLUT.

nos vemos hasta la próxima..

Comparte este contenido!.Tweet about this on TwitterShare on Google+Share on FacebookEmail this to someone

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *