Uso de Toolchains alternativos
Este cuadro permite definir un nuevo toolchain (compilador o conjunto de herramientas utilizadas para la compilación), o modificar uno existente. Para ello debe seleccionarlo en la opción "Herramientas de compilación" de la pestaña "Programa/Proyecto" del cuadro de preferencias, y utilizar el botón "..." ubicado a la izquierda. En este cuadro encontrará las siguientes opciones:
- Pestaña General
- Nombre de archivo: Este es el nombre del archivo en donde se guarda la configuración del toolchain. Las configuracione por defecto de ZinjaI se encuentran en un directorio "toolchains" dentro del directorio de instalación. Las configuraciones generadas por el usuario se encuentran en un directorio "toolchain" dentro del directorio de configuración del usuario ("zinjai" o ".zinjai" en su home). Si se ingresa un nombre diferente a los existentes, se crea un nuevo archivo de toolchain en el directorio del usuario. Si se utiliza un nombre preexistente, la nueva configuración reemplazará a la anterior. Para el caso de las configuraciones que ZinjaI incluye por defecto, las versiones originiales se mantendrán en el directorio de instalación de ZinjaI, y las modificaciones se guardarán en copias en el directorio del usuario.
- Tipo de herramienta: ZinjaI puede gestionar directamente la compilación mediante cualquier compilador con interfaz compatible con gcc. Las opciones "gcc" y "clang" son para estos compiladores en particular, ya que ZinjaI además verificará sus versiones para ajustar algunos argumentos de acuerdo a las mismas (por ejemplo, para gcc<=4.8, el argumento "-std=c++14" se transforma en "-std=c++1y"). Con la opción "gcc-like" ZinjaI invocará al compilador con los argumentos en el mismo formato que gcc, pero sin hacer ninguna corrección. La opción extern sirve para delegar el proceso completo de construcción del ejecutable a una herramienta o script externo (por ejemplo "make").
- Directorio del compilador: Este es el directorio que ZinjaI utilizará como valor de la variable "${MINGW_DIR}" al analizar las configuraciones de programas y proyectos. Puede ser una ruta absoluta, o relativa a la instalación actual de ZinjaI. Se utiliza en general para establecer las rutas de headers y binarios de bibliotecas como relativas a la instalación del ZinjaI y su compilador.
- Directorios con ejecutables: Estos directorios (pueden ser varios, separados por comas o espacios) serán agregados a la variable de entorno PATH. Se utilizan para que las llamadas al compilador o la herramienta de construcción no requiran rutas completas. Los paths pueden ser absolutos o relativos al directorio de instalación de ZinjaI. Si ingresa un path con espacios, debe hacerlo utilizando comillas, para que no se considere al espacio como la separación entre dos paths diferentes (Ej: "C:\program files (x86)\ming64\bin").
- Comando de construcción: Solo para toolchains tipo "extern". Este es el comando que invocará ZinjaI para compilar el ejecutable (es decir, mendiante la opción "Compilar" del menú "Ejecución", o antes de ejecutar mediante la opción "Ejecutar" del mismo menú o mediante "Iniciar" del menú "Depuración").
- Comando de limpieza: Solo para toolchains tipo "extern". Este es el comando que invocará ZinjaI para eliminar los binarios generados por el proyecto (es decir, mendiante la opción "Limpiar" del menú "Ejecución").
- Pestaña Configuración fija Cuando un toolchain no es de tipo "extern", aquí se definen los comandos y argumentos básicos para toda compilación o enlazado. En general estas opciones serán fijas y compartidas tanto por programas simples como por proyectos. Sin embargo, puede utilizar un conjunto de variables especiales para permitirle a un proyecto alterar alguno de estos campos (más detalles en el tercer grupo "Argumentos configurables").
- Comando del compilador C: Es el comando que se utiliza para compilar programas C, sin argumentos. Usualmente aquí deberá colocar simplemente el nombre del ejecutable (su path estará en "Directorios con ejecutables").
- Argumentos para la compilación C: Estos argumentos se agregarán a todas las compilaciones de fuentes C. No debería ingresar aquí argumentos que puedan configurarse desde las opciones de compilación de un programa o proyecto. Se utiliza en general para argumentos que no cambian el binario resultante, sino que solo controlan el formato de la salida de errores y warnings para ajustarlo al procesamiento que hará ZinjaI de los mismos.
- Comando del compilador C++: Es el comando que se utiliza para compilar programas C++, sin argumentos. Usualmente aquí deberá colocar simplemente el nombre del ejecutable (su path estará en "Directorios con ejecutables").
- Argumentos para la compilación C++: Estos argumentos se agregarán a todas las compilaciones de fuentes C++. No debería ingresar aquí argumentos que puedan configurarse desde las opciones de compilación de un programa o proyecto. Se utiliza en general para argumentos que no cambian el binario resultante, sino que solo controlan el formato de la salida de errores y warnings para ajustarlo al procesamiento que hará ZinjaI de los mismos.
- Comando del enlazador: Este es el comando que ZinjaI invocará para enlazar un ejecutable. Usualmente deberá ingresar aquí solo el nombre del ejectuable que realiza el enlazado (su path estará en "Directorios con ejecutables").
- Argumentos para el enlazado C: Puede agregar argumentos adicionales fijos para el enlazado de cualquier programa que incluya fuentes C. En algunos toolchains basados en MinGW que por defecto utilizan enlazado dinámico para la biblioteca estándar, se incluyen aquí las opciones para evitarlo, ya que se asume que en la mayoría de los casos se querrá generar un ejectuable sin dependencias (pero sd utiliza el mecanismo descripto en la tercer sección "Argumentos configurables" para que un proyecto puede revertirlo).
- Argumentos para el enlazado C++: Puede agregar argumentos adicionales fijos para el enlazado de cualquier programa que incluya fuentes C++. En algunos toolchains basados en MinGW que por defecto utilizan enlazado dinámico para la biblioteca estándar, se incluyen aquí las opciones para evitarlo, ya que se asume que en la mayoría de los casos se querrá generar un ejectuable sin dependencias (pero sd utiliza el mecanismo descripto en la tercer sección "Argumentos configurables" para que un proyecto puede revertirlo).
- Comando para enlazar bibliotecas dinámicas: Debe introducir aquí un comando que ZinjaI completará para generar un binario de biblioteca dinámica a partir de varios fuentes compilados previamente, agregando a este comando solamente primero el nombre del archivo de salida y luego los objetos que lo componen. Por esta razón, en general, además del nombre del ejecutable que realizará esta tarea se requiere agregar algunos argumentos para indicar el tipo de compilación y que lo siguiente (lo primero que agregará ZinjaI) será el archivo de salida.
- Comando para enlazar bibliotecas estáticas: Debe introducir aquí un comando que ZinjaI completará para generar un binario de biblioteca estática a partir de varios fuentes compilados previamente, agregando a este comando solamente primero el nombre del archivo de salida y luego los objetos que lo componen. Por esta razón, en general, además del nombre del ejecutable que realizará esta tarea se requiere agregar algunos argumentos para indicar el tipo de compilación y que lo siguiente (lo primero que agregará ZinjaI) será el archivo de salida.
- Pestaña Argumentos configurables En los campos de la pestaña "Configuración Fija", y en los comandos para toolchains externos de la pestaña "General", puede introducir variables de la forma "${ARGX}" (sin las comillas) donde X es un número de 1 a 5. En esta pestaña se definen los valores por defecto para estas variables. Un proyecto podrá alterar estos valores desde la pestaña "Secuencia" del cuadro de Opciones de Compilación y Ejecución. Dado que el significado de cada argumento dependerá del uso que se le dé al mismo al crear el toolchain, puede ingresar en este cuadro descripciones cortas de estos argumentos para que se muestren al configurarlos desde las opciones de proyecto.