Compilando C++ en Sistemas Linux

Hola a tod@s, en este post vamos a revisar de una manera un tanto superficial las diferentes maneras de compilar un "Hola Mundo" hecho en C++, en un sistema Linux. Dichas formas de compilación serán las siguientes:

Hola Mundo en C++

Primero vamos a escribir nuestro "Hola Mundo" en C++. Abrimos cualquier editor de texto puede ser (VSCode, Vim, Nano, Atom, etc) y escribimos lo siguiente:

#include <iostream>

using namespace std;

int main() {
    cout << "Hello World!" << endl;
    return 0;
}

Guardamos nuestro archivo como hello-world.cpp

GCC

Para compilar nuestro "Hola Mundo" en C++ directo con GCC vamos a ejecutar el siguiente comando en nuesta terminal.

g++ -o hello-world hello-world.cpp

Esto generará en la misma carpeta un archivo ejecutable llamado "hello-world" sin ninguna extensión y para ejecutarlo hacemos lo siguiente:

./hello-world

La respuesta será: Hello World!

Makefile

Para poder compilar con "Makefile" vamos a utilizar nuestro mismo archivo "hello-world.cpp" pero adicional a este vamos a crear nuestro archivo Makefile de la siguiente manera.

Abrimos nuestro editor y escribimos lo siguiente:

default:
    g++ -o hello-world hello-world.cpp

Guardamos nuestro archivo como Makefile

Ahora para compilar vamos a ejecutar el siguiente comando en nuestra terminal:

make

Esto generará en la misma carpeta un archivo ejecutable llamado "hello-world" sin ninguna extensión y para ejecutarlo hacemos lo siguiente:

./hello-world

La respuesta será: Hello World!

Gradle

Muchos de nosotros pensábamos (incluyéndome) que "gradle" funcionaba únicamente para compilar programas hechos en lenguajes que corren sobre la JVM "Java Virtual Machine" como (Java, Kotlin, Groovy, etc), pero también nos permite compilar apps escritas en C++.

Para poder compilar nuestro "Hola Mundo" hecho en C++ vamos a realizar lo siguiente:

  • Proyecto Gradle
  • Jerarquía de directorios
  • Hola Mundo C++ para Gradle
  • Configuración de Gradle para C++
  • Compilación con Gradle

Proyecto Gradle

Primero vamos a crear un proyecto gradle vacío utilizando "gradle wrapper" en nuestra carpeta donde va a estar el código.

Jerarquía de directorios

Puesto que gradle utiliza una jerarquía de directorios, las cuales podrían ser diferentes a las que llegaríamos a tener si usamos Makefile u otro método de compilación vamos a alojar nuestro archivo "hello-world.cpp" dentro de src/main/cpp, esta jerarquía de directorios es muy similar a la que se usa en una aplicación java.

Hola Mundo C++ para Gradle

Ahora vamos a escribir un "Hola Mundo" un poquito diferente (Nada mas el mensaje de salida), abrimos nuestro editor de texto y escribimos lo siguiente:

#include <iostream>

using namespace std;

int main() {
    cout << "Hello World from gradle using C++ plugin!!" << endl;
    return 0;
}

Guardamos nuestro archivo como hello-world.cpp

Configuración de Gradle para C++

Para que Gradle pueda compilar un archivo cpp y así crear satisfactoriamente un archivo binario que sea ejecutable vamos a configurar nuestro archivo build.gradle.

Abrimos con nuestro editor de texto el archivo build.gradle y escribimos lo siguiente:

apply plugin : 'cpp-application'

application {
    baseName = "hello-world"
}

Compilación con Gradle

Ahora nos queda compilar nuestro "Hola Mundo" con gradle y lo haremos de la siguiente manera:

./gradlew assemble

Esto generará un archivo ejecutable llamado "hello-world" sin ninguna extensión dentro de nuestro proyecto gradle en la dirección build/exe/main/debug y para ejecutarlo hacemos lo siguiente:

build/exe/main/debug/hello-world

La respuesta será Hello World from gradle using C++ plugin!!

El código aquí expuesto lo pueden encontrar en: https://github.com/nano-bytes/cpp-compilation

You may also like...