Este paso es opcional, y si ya está instalado adecuadamente el compilador C++, Geany ya funcionará adecuadamente sin necesidad de llevarlo a cabo. Sin embargo, recomendamos realizar este paso para configurar algunas opciones para el compilador, que ayudan a detectar errores muy comunes al programar, más fácilmente.
Basta con realizar la configuración siguiente una única vez, y ya quedará así configurada automáticamente para todos los programas C++ que escribamos.
Una vez abierto Geany, vamos al menú “Construir” / “Build”, y seleccionamos “Configurar Comandos de Construcción” / “Set Build Commands”. Allí reemplazamos el valor de la columna “Comando” / “Command” de la fila “Compilación” / “Compile” (Sección C++ commands) por la siguiente línea completa:
g++ -std=gnu++11 -g -O2 -Wconversion -Wshadow -Wall -Wextra -D_GLIBCXX_DEBUG -c "%f"
Hacemos lo mismo con la línea que está inmediatamente debajo, “Construcción” / “Build”, reemplazándola por lo siguiente:
g++ -std=gnu++11 -g -O2 -Wconversion -Wshadow -Wall -Wextra -D_GLIBCXX_DEBUG -o "%e" "%f"
Cerramos la ventana presionando “Aceptar” / “Ok”.
¡LISTO!
Con esto ya tenemos el entorno completamente configurado, y estamos listos para crear programas en Geany.
La siguiente información no es necesaria en absoluto para programar. Conocer exactamente qué efecto tiene cada una de las opciones anteriores no es importante en una primera etapa.
No obstante, para el beneficio de programadores avanzados de C++ , se resume a continuación una explicación de cada opción propuesta.
-std=gnu++11
: Esta opción permite utilizar C++11, y hoy en día casi todas las competencias de programación utilizan C++11 o superior.-g
: Retiene información de símbolos de debugging en el ejecutable final. Esto significa que se puede ver qué funciones se están ejecutando al utilizar un debugger o ante un "core dump". Generalmente es irrelevante si no se utilizan debuggers.-O2
: Le indica al compilador que optimice el código “con nivel de optimización 2”.-Wconversion
: Activa un warning extremadamente útil, que hace que el compilador nos avise si se convierte un tipo en otro de forma tal que se podría perder precisión. Los casos más comunes, que pueden dar lugar a errores en el programa, ocurren al convertir un long long
en un int
(el valor puede no entrar, ocurriendo overflow), o al convertir un double
en algún tipo entero (quizás truncar de esa manera no era la idea del programador). int N = cadena.size();
), basta introducir un cast explícito para eliminar el warning (en el ejemplo anterior, haciendo int N = int(cadena.size());
).-Wshadow
: Activa un warning extremadamente útil, que hace que el compilador nos avise si una variable en un ámbito interno (“local”) oculta o “pisa” una variable en un ámbito más externo (“global”).-Wall
: Activa varios “warnings” del compilador extremadamente útiles para detectar errores comunes. Pese a su nombre (“all”) no activa todos los warnings existentes.return
en una función, o no utilizar nunca una determinada variable (lo que suele indicar que nos olvidamos algo).-Wextra
: Activa aún más “warnings” que la opción anteriorint foo(int)
en lugar de int foo(int x)
si el parámetro no se usa).-D_GLIBCXX_DEBUG
: Activa verificaciones de “chequeos de rangos” en tiempo de ejecución.vector
fuera de rango, o se hace .pop()
de una queue
vacía (por ejemplo), se obtiene inmediatamente un error en tiempo de ejecución indicando eso, en lugar de que el programa potencialmente falle en forma totalmente silenciosa y difícil de detectar.