Files
harbour-core/utils/hbmk2/doc/hbmk2.es.md
2017-05-03 09:11:48 +00:00

55 KiB

Harbour Make (hbmk2) 3.2.0dev (r2013-04-03 03:33)
Copyright (c) 1999-2013, Viktor Szakats
http://harbour\-project\.org/
Traducción (es): Guillermo Varona Silupú <gvaronas@gmail.com>

Sintaxis:

hbmk2 [opciones] [<archivo[s]deordenes>] <fuente[s][.prg|.c|.obj|.o|.rc|.res|.def|.po|.pot|.hbl|@.clp|.d|.ch]>

Descripción:

hbmk2 es una herramienta integrada y portable de generación o automatización de código, haciendo posible la creación de varios tipos de ejecutables binarios (ejecutable, biblioteca dinámica, biblioteca estática, binario portátil de Harbour) desde múltiples tipos de ficheros de código fuente (C, C++, Objective-C, Harbour, traducciones de 'gettext', recursos de Windows). 'Integrada' significa que un solo fichero de proyecto hbmk2 puede controlar todos, o casi todos, los aspectos del proceso de construcción. 'Portable' significa que un solo fichero de proyecto hbmk2 puede controlar la construcción del ejecutable binario en todas las plataformas de los sistemas operativos soportados y a través de todos los compiladores de C soportados. Ayuda también en la mayoría de los procesos de construcción por medio de pequeños y simples ficheros de proyecto (opciones). hbmk2 soporta ficheros de proyecto para C/C++/Objetive-C sin relación con Harbour. Para conseguir esos objetivos, hbmk2 detecta automáticamente a Harbour, al compilador de C y a las demás herramientas necesarias, las configura y luego las ejecuta convenientemente. hbmk2 permite extender los tipos de código fuente soportados por medio de complementos.
Además de construir ejecutables, hbmk2 puede ejecutar archivos de órdenes de Harbour (tanto en código fuente como precompilado) directamente, y también dispone de un intérprete de comandos interactivo.

Opciones:

  • -o<outname> nombre del archivo de salida

  • -l<libname> enlaza con la biblioteca <libname>. <libname> se especificará sin ruta, extensión y sin el prefijo 'lib' (excepto que sea parte del nombre). No incluyas las bibliotecas del núcleo de Harbour, ya que se añaden automáticamente según se necesitan. Si <libname> comienza con el caracter '-', esta se quitará de la lista de bibliotecas a la hora de enlazar.

  • -L<libpath> rutas adicionales para buscar archivos de bibliotecas

  • -i<p>|-incpath=<p> rutas adicionales para buscar archivos de cabecera

  • -static|-shared enlaza con librerías estáticas/compartidas

  • -gt<name> enlaza con el controlador GT GT<name>, se puede repetir para enlazar más controladores. El primero de ellos será el GT por defecto en tiempo de ejecución.

  • -inc[-] activa el modo de compilación incremental (por defecto: desactivado)

  • -hbexe crea un ejecutable (por defecto)

  • -hblib crea una librería estática

  • -hbdyn crea una biblioteca dinámica (sin enlace a Harbour VM)

  • -hbdynvm crea una librería dinámica (con enlace a Harbour VM)

  • -mt|-st enlaza con soporte multihilo/monohilo en Harbour VM

  • -gui|-std crea un ejecutable con interfaz gráfico o de consola

  • -main=<mainfunc> sustituye el nombre de la función o procedimento inicial

  • -request=<func> fuerza función/procedimiento a enlazarse

  • -fullstatic enlaza en modo estático con todas las librerías

  • -pic[-] crea código objeto independiente de la posición (siempre activado en los modos -hbdyn/-hbdynvm)

  • -[full|fix]shared crea archivos binarios Harbour para compartir sin/con referencia absoluta a librerías de Harbour (por defecto: 'fullshared' cuando Harbour se instala en ubicación del sistema, 'fixshared' en otro caso) (opción fix/full en *nix solamente)

  • -nulrdd[-] enlaza con 'nulrdd'

  • -debug[-] añade/excluye información de debug de compilador C. Para activar el debug de Harbour utilize la opción -b como de costumbre

  • -optim[-] conmuta las optimizaciones del compilador C (por defecto: on)

  • -cpp[-] fuerza el modo C++/C

  • -cpp=<value> selecciona el modo C++. Los valores permitidos son: def, yes, no

  • -map[-] crea (o no) un archivo map

  • -implib[-] crea (o no) una biblioteca de importación (en modo -hbdyn/-hbexe). Se le añade un sufijo al nombre.

  • -implib=<output> crea una biblioteca de importación (en modo -hbdyn/-hbexe) denominada <output> (por defecto: igual que la salida)

  • -ln=<link> crea enlace simbólico apuntando a <output> (<link> se asocia a <output>)

  • -strip[-] desmonta (no desmonta) binarios

  • -trace[-] muestra los comandos ejecutados

  • -beep[-] activa (o desactiva) beep simple en caso de éxito, doble beep en caso de falla

  • -ignore[-] ignore errores cuando ejecute herramienta de compilador (por defecto: off)

  • -hbcppmm[-] sustituye las funciones de administración de memoria estandar de C++ con las de Harbour

  • -winuni[-] selecciona el modo de compilación entre Unicode (WIDE) y ANSI (por defecto: ANSI) (sólo para Windows. Para WinCE siempre se establece en UNICODE.)

  • -nohblib[-] no use librerías estáticas del núcleo de Harbour al enlazar

  • -nodefgt[-] no enlaza a los GT por defecto (efectivo en modo -static)

  • -nolibgrouping[-] desactiva el agrupamiento de bibliotecas en compiladores basados en gcc

  • -nomiscsyslib[-] no se añade la lista adicional de librerías del sistema a la lista de librerías por defecto

  • -traceonly muestra comandos a ser ejecutados, pero no ejecutarlos

  • -warn=<level> establece el nivel advertencias del compilar de C
    <level> puede ser: max, yes, low, no, def (por defecto: yes)

  • -safe[-] activa opciones seguras en el compilador/enlazador de código fuente en C (por defecto: activado en Windows, desactivado en otros sistemas)

  • -compr=<level> comprime el ejecutable/biblioteca dinámica (es necesaria la herramienta UPX)
    <level> puede ser: yes, no, min, max

  • -run[-] ejecuta/no ejecuta el objetivo generado

  • -vcshead=<file> genera un archivo de cabecera .ch con información del repositorio local. Actualmente están soportados Git, SVN, Mercurial, Bazaar, Fossil, CVS y Monotone. El archivo de cabecera definirá la constante de preprocesador _HBMK_VCS_TYPE_ con el nombre del VCS detectado, y _HBMK_VCS_ID_ con el ID único del repositorio local. Si no se detecta un VCS, un número secuencial será incrementado cada vez que se construya.

  • -tshead=<file> genera archivo de cabecera .ch con información de fecha/hora. Cabecera generado definirá macros _HBMK_BUILD_DATE_, _HBMK_BUILD_TIME_, _HBMK_BUILD_TIMESTAMP_ con fecha/hora de creación de archivo

  • -icon=<file> establece <file> como icono de la aplicación. <file> debe ser de un formato soportado por la plataforma de destino (no soportado por algunas plataformas/compiladores). En Windows, está implementado generando y enlazando un archivo de recurso.

  • -manifest=<file> incrusta el fichero de manifiesto <file> en el ejecutable/biblioteca dinámica (sólo para Windows)

  • -sign=<key> firma el ejecutable con <key> (sólo para Windows y Darwin). En Windows se usa signtool.exe (incluido en MS Windows SDK) o posign.exe (incluido en Pelles C 7), por ese orden, se detectan ambos automaticamente.

  • -signpw=<pw> usa <pw> como contraseña cuando se firma el ejecutable (sólo para Windows y Darwin)

  • -instfile=<g:file> añade <archivo> a la lista de archivos que desea copiar a la ruta especificada por la opción -instpath. <g> es un grupo opcional de copia (distingue mayúsculas y minúsculas), debe haber al menos dos caracteres. En caso de que no se especifica <archivo>, la lista de archivos en ese grupo se vaciará.

  • -instpath=<g:path> copia el/los archivo(s) objetivo a la ruta <path>. Si <path> es un directorio, debería terminar con un separador de rutas, en este caso los archivos especificados en la opción '-instfile' también son copiados. Puede ser especificado varias veces. <g> es grupo de copia opcional, debe tener al menos dos caracteres de largo. El objetivo final será copiado automaticamente al grupo de copia por defecto (sin asignación de <g>). Existen los siguientes grupos de copia ya incluidos: 'depimplib' para las bibliotecas importadas y 'depimplibsrc' para los archivos fuente de las bibliotecas importadas (.dll), ambos pertenecientes a las dependencias.

  • -instforce[-] copia el/los archivo(s) objetivos a la ruta de instalación aunque esten al día

  • -depimplib[-] activa (o desactiva) la generación de Bibliotecas de Importación para fuentes de biblioteca de importación especificados en la opción -depimplibs= (por defecto: yes)

  • -stop[=<text>] para sin hacer nada y muestra <text> si se ha especificado

  • -echo=<text> eco de texto en la pantalla

  • -pause fuerza, en la salida, una pausa esperando la pulsación de una tecla en caso de error (sólo para los controladores GT alternativos)

  • -exitstr muestra el error resultante al salir como texto reconocible

  • -info activa los mensajes informativos

  • -quiet[-] suprime todos los mensajes en pantalla

  • -bldf[-] hereda indicadores de Harbour: todos/no (por defecto)

  • -bldf=[p][c][l] hereda todos los indicadores de .prg/.c/linker (o ninguno) desde la construcción de Harbour

  • -F<framework> enlace con la 'framework' <framework> (sólo para Darwin)

  • -prgflag=<f> pasa el indicador al compilador de Harbour

  • -cflag=<f> pasa el indicador al compilador C

  • -resflag=<f> pasa el indicador al compilador de recursos (sólo para Windows)

  • -ldflag=<f> pasa el indicador al enlazador (ejecutable)

  • -dflag=<f> pasa el indicador al enlazador (biblioteca dinámica)

  • -aflag=<f> pasa el indicador al enlazador (biblioteca estática)

  • -iflag=<f> pasa el indicador al comando de creación de bibliotecas de importación

  • -signflag=<f> pasa el indicador al comando de firma de código

  • -runflag=<f> pasa el indicador al ejecutable de salida cuando la opción -run es utilizada

  • -cflag+=<f> pasa el indicador al compilador de C para reemplazar las opciones del compilador C añadida por hbmk2 mismo. Usar con precaución.

  • -ldflag+=<f> pasa una sola opción al enlazador (ejecutable) después de la lista de bibliotecas. Usar con precaución.

  • -dflag+=<f> pasa una sola opción al enlazador (biblioteca dinámica) después de la lista de bibliotecas. Usar con precaución.

  • -3rd=<f> opciones/indicadores reservados para herramientas de terceros, siempre ignorados por el mismo hbmk2

  • -env:<e>[<o>[<v>]] modifica las variables de entorno local. <e> es el nombre de la variable de entorno a modificar. <o> puede ser '=' para establecer/reemplazar, '-' para borrar, '+' para añadir al final de valor existente, '#' para insertar al principio del valor existente. <v> es el valor a establecer/añadir/insertar.

  • -jobs=<n> inicia <n> tareas de compilación (sólo para plataformas multiproceso)

  • -head=<m> modo de funcionamiento del analizador de cabeceras (en el modo incremental)
    <m> puede ser: nativo (utiliza el compilador para extraer las dependencias), completa (por defecto, utiliza un simple analizador de texto en el fichero entero), dep, off

  • -rebuild reconstruye (en modo incremental)

  • -rebuildall reconstruye con sub-proyectos (contrucción en modo incremental)

  • -clean elimina todos los ficheros generados por la construcción (en modo incremental)

  • -workdir=<dir> establece el directorio de trabajo
    (por defecto: .hbmk/<platform>/<compiler> [*] en modo incremental, si no, directorio temporal del SO)

  • -hbcontainer objetivo final virtual, no crea nada. Es útil para crear un '.hbp' con el único propósito de referenciar sub-proyectos.

  • -hbimplib crea librería de importación (sólo para Windows)

  • -hbl[=<output>] nombre-de-archivo .hbl resultante. macro %{hb_lng} es aceptada en nombre-de-archivo.

  • -lng=<languages> lista de idiomas a ser reemplazados en %{hb_lng} macros en archivos .pot/.po y nombres de archivos y salida .hbl/.po. Lista separada por comas:
    -lng=en,hu-HU,de

  • -po=<output> crea/actualiza archivo .po a partir del código fuente. Lo combina con el anterior archivo .po del mismo nombre.

  • -minipo[-] añade (o no) el número de versión y referencia del archivo de origen al .po (por defecto: se añade)

  • -rebuildpo recrea archivo .po, eliminando todas las entradas obsoletas en el mismo

  • -hbx=[<.ch>] crea un archivo de cabecera de Harbour (en formato '.hbx') con todos los símbolos externos. Un parámetro en blanco lo desactiva.

  • -autohbc=<.ch:.hbc> <.ch> es un nombre de archivo de cabecera. <.hbc> es un nombre de archivo .hbc para ser incluido automáticamente en caso la cabecera se encuentra en cualquiera de las fuentes compiladas. (EXPERIMENTAL)

  • -deppkgname=<d:n> <d> es el nombre de la dependencia. <n> nombre de la dependencia de un paquete. Se puede especificar varias veces.

  • -depkeyhead=<d:h> <d> es el nombre de la dependencia. <h> es la cabecera clave (.h) de la dependencia de un paquete. Varios encabezados alternativos pueden ser especificados.

  • -depoptional=<d:f> <d> es el nombre de la dependencia. <f> puede ser 'yes' o 'no', especifica si la dependencia es opcional. Por defecto: no

  • -depcontrol=<d:v> <d> es el nombre de la dependencia. <v> es un valor que controla como se hace la detección. Valores aceptados: no, yes, force, nolocal, local. Por defecto: contenido de envvar HBMK_WITH_<d>

  • -depincroot=<d:r> <d> es el nombre de la dependencia. Establecer <r> como directorio raíz para las rutas especificadas en la opción -depincpath.

  • -depincpath=<d:i> <d> es el nombre de la dependencia. Añade <i> a la lista de rutas de detección de encabezados.

  • -depincpathlocal=<d:i> <d> es el nombre de la dependencia. Añadir <i> a la lista de rutas de detección de cabeceras, donde <i> apunta a un directorio local del proyecto, conteniendo una dependencia embebida (conocido como 'alojado localmente').

  • -depimplibs=<d:dll> <d> es el nombre de la dependencia. Añade <dll> a la lista de las fuentes de bibliotecas de importación.

  • -depimplibd=<d:lib> <d> es el nombre de la dependencia. Establecer nombre generado de biblioteca de importación a <lib>

  • -depfinish=<d> <d> es el nombre de la dependencia. Cierra la definición de la dependencias y realiza la detección, estableciendo todas las variables macro de los filtros predefinidos y las opciones de construcción relacionadas. Es opcional; si se omite, la detección tendrá lugar después de procesar todas las opciones.

  • -plugin=<filename> añade complemento. <filename> puede ser: .hb, .prg, .hrb

  • -pi=<filename> pasa un archivo de entrada a los complementos

  • -pflag=<f> pasa el indicador a los complementos

Las siguientes opciones están disponibles en la línea de comandos:

  • -target=<script> especifica un nuevo objetivo final. <script> puede ser un fichero '.prg' (o sin extensión) o un fichero '.hbp'. Tener en cuenta que los ficheros '.hbp' son considerados automáticamente como objetivos finales por separado.

  • -hbrun ejecuta el objetivo final de la construcción

  • -hbraw se detiene después de ejecutar el compilador de Harbour

  • -hbcmp|-clipper se detiene después de la creación de los archivos objeto
    puede crear un enlace o copiar hbmk2 a hbcmp/clipper para obtener el mismo efecto

  • -hbcc acepta indicadores propios de C
    puede crear un enlace o copiar hbmk2 a 'hbcc' para obtener el mismo efecto

  • -hblnk acepta indicadores propios del enlazador

  • -autohbm[-] activa (o desactiva) el procesamiento de hbmk.hbm en el directorio actual (por defecto: yes)

  • -hb10 activa el modo de compatibilidad 'Harbour 1.0.x'

  • -hb20 activa el modo de compatibilidad 'Harbour 2.0.x'

  • -hb30 activa el modo de compatibilidad 'Harbour 3.0.x'

  • -xhb activa el modo 'xhb'

  • -hbc activa el modo C puro

  • -rtlink

  • -blinker

  • -exospace emula el comportamiento del enlazador compatible con Clipper
    puede crear un enlace o copiar hbmk2 a 'rtlink'/'blinker'/'exospace' para obtener el mismo efecto

  • -hbreg[=global] realiza el registro de hbmk2 para el tipo de archivo de órdenes de Harbour (.hb) (sólo para Windows)

  • -hbunreg[=global] anula el registro de hbmk2 para el tipo de archivo de órdenes de Harbour (.hb) (sólo para Windows)

  • -find <text> muestra un listado de las funciones conocidas de Harbour que contienen <text> en su nombre, junto a su paquete (no es sensible a mayúsculas/minúsculas, acepta múltiples valores, puede contener caracteres comodín)

  • -hbmake=<file> convierte proyecto hbmake en un archivo .hbp

  • -xbp=<file> convierte proyecto .xbp (xbuild) en un archivo .hbp

  • -xhp=<file> convierte un proyecto .xhp (xMate) en un archivo .hbp

  • --hbdirbin envía el directorio de programas de Harbour a la salida estándar

  • --hbdirdyn envía el directorio de bibliotecas dinámicas de Harbour a la salida entándar

  • --hbdirlib envía el directorio de bibliotecas estáticas de Harbour a la salida estándar

  • --hbdirinc envía el directorio de archivos de cabecera de Harbour a la salida estándar

  • --hbinfo[=nested] envia información de la construcción de Harbour a la salida estándar. La salida esta en formato JSON. Los rutas incluidas contienen siempre barras inclinadas. Cada bloque JSON es seguido de un byte 0x0A.

  • -plat=<platform> selecciona la CPU de destino (por defecto: 'automatic')

  • -cpu=<cpu> selecciona la CPU de destino. (EXPERIMENTAL)

  • -comp=<compiler> sustituye la detección automática del compilar de C
    Valor especial:
    - bld: usa la configuración original (por defecto en *nix)

  • -build=<name> utilizar un nombre de build especifico

  • -lang=<lang> sustituye idioma por defecto. <lang> es un código ISO de idioma.

  • -width=<n> establece el ancho de salida a <n> caracteres (0=sin límite).

  • -shl muestra el nivel del sub-proyecto en las líneas de salida

  • -viewhelp abre la ayuda completa en un visor de texto

  • -longhelp ayuda completa

  • -longhelpmd ayuda completa en formato Markdown

  • -harbourhelp ayuda del compilador Harbour (todas las opciones del compilador Harbour son aceptadas tal como son por hbmk2)

  • -credits muestra los créditos de autor del compilador Harbour

  • -build muestra la información del compilador Harbour en el momento de su creación

  • -version muestra sólo la cabecera con la versión

Las opciones siguientes son las internas o para desarrolladores (la compatibilidad no esta garantizada):

  • -debugtime mide el tiempo que ha tardado la construcción
  • -debuginc muestra detalles internos del modo de construcción incremental
  • -debugstub muestra el contenido de todos los códigos fuentes generados internamente
  • -debugi18n muestra detalles internos de la generación de los ficheros de traducción
  • -debugdepd muestra detalles internos de la búsqueda de dependencia
  • -debugpars muestra todos los parámetros de entrada en orden de procesamiento
  • -debugrte genera un error en tiempo de ejecución

Puedes crear un enlace simbólico/copiar/renombrar hbmk2 a los siguientes nombres para cambiar el modo de ejecución por defecto:

  • hbrun*|*hbrun modo de ejecución de archivos de órdenes / intérprete de comandos interactivo
  • hbrund|hbrun*d modo de ejecución de archivos de órdenes / intérprete de comandos interactivo en modo depuración
  • harbour modo -hbraw (emula el compilador Harbour plano)
  • clipper modo -hbcmp (emula el compilador Clipper)
  • rtlink modo -rtlink (emula el enlazador de Clipper)
  • exospace modo -rtlink (emula el enlazador de Clipper)
  • blinker modo -rtlink (emula el enlazador de Clipper)
  • *10 opción -hb10
  • *20 opción -hb20
  • *30 opción -hb30
  • x* opción -xhb
  • hbcmp*|*hbcmp modo -hbcmp (emula el compilador Harbour creando un objeto binario)
  • hbcc*|*hbcc modo -hbcc (emula un compilador de C)
  • hblnk*|*hblnk modo -hblnk (emula un enlazador de C)
  • hbexe*|*hbexe modo -hbexe
  • hblib*|*hblib modo -hblib
  • hbdyn*|*hbdyn modo -hbdyn

Ficheros:

  • *.hbp archivo de proyecto. Puede contener cualquier número de opciones de la linea de comandos, que son los esperados para crear un objetivo final. La lineas que comienzan con el carácter "#" son ignoradas, por otra parte es opcional incluir caracteres de nueva linea y las opciones deben de estar separadas por espacios, como en la linea de comandos. Las opciones que contienen espacios deben encerrarse entre comillas dobles. Cada referencia a un archivo '.hbp' será ejecutado como un sub-proyecto.

  • *.hbm colección de opciones. Puede ser utilizada para recoger opciones por defecto en un archivo e incluirlo dentro de un archivo de proyecto. Utiliza el mismo formato que los archivos .hbp.

  • *.hbc colección de opciones que acompañan a los componentes (conocidos como 'bibliotecas' o paquetes). Usa una sintaxis diferente a la línea de comandos y a los archivos '.hbp'/'.hbm'. Las líneas que comienzan con "#" son ignoradas, cada directiva debe ser ubicada en líneas separadas.

  • *.ch si se pasa directamente como un archivo fuente, se utilizará como una cabecera estándar adicional

  • hbmk.hbc archivo .hbc estandar que es procesado automáticamente si está presente. Posible(s) localizacion(es) (en orden de preferencia) [*]: %APPDATA%\.harbour, <directorio de hbmk2>

  • hbmk.hbm archivo .hbm situado en el directorio de trabajo actual, que es procesado automáticamente antes que otras opciones

  • $hb_pkg_dynlib.hbm archivo especial .hbm incrustado en hbmk2. Se encarga de la creación de una biblioteca dinámica (al estilo de las contribuciones de Harbour)

  • $hb_pkg_install.hbm fichero especial '.hbm' incluido dentro de hbmk2. Se encarga de los detalles de la instalación de los objetivos finales, y paquetes relacionados, a las localizaciones estándar (al estilo de las construcciones de Harbour).

  • *.hb archivo de órdenes de Harbour

  • *.hrb binario portable de Harbour (aka archivo de comandos pre-compilado de Harbour)

  • hbstart.hb archivo de órdenes de inicio de Harbour para el intérprete de comandos de Harbour. Se ejecuta automáticamente al comienzo de la ejecución del intérprete de comandos, si existe. Localizaciones posibles (en orden de precedencia) [*]: .\, %APPDATA%\.harbour, <directorio de hbmk2>

  • shell plugins complementos '.hb' y '.hrb' para el intérprete de comandos interactivo de Harbour. Pueden localizarse en [*]: %APPDATA%\.harbour\

  • .hb_history guarda el historial de comandos del intérprete de comandos de Harbour. Puedes deshabilitar el historial haciendo que la primera linea sea 'no' (sin comillas y con salto de linea). Se guarda en [*]: %APPDATA%\.harbour\

  • hb_extension lista de extensiones para cargar en el interprete de comandos interactivo de Harbour. Una extensión por línea, y se ignora todo lo que hay detrás del caracter '#'. Nombre de fichero alternativo en MS-DOS: hb_ext.ini. Reside en [*]: %APPDATA%\.harbour\

Variables de macro:

  • ${hb_root} directorio de hbmk2
  • ${hb_dir} directorio del fichero en el que es usado
  • ${hb_dirname} directorio raiz del archivo que esta en proceso
  • ${hb_name} nombre del archivo que se ha utilizado (sin ruta ni extensión)
  • ${hb_self} nombre de archivo completo que esta siendo procesado
  • ${hb_curdir} directorio de trabajo actual
  • ${hb_tempdir} directorio para archivos temporales del sistema operativo
  • ${hb_targetname} nombre del proyecto (sin directorio ni extensión). Devuelve .adhoc. si no es un archivo de proyecto.
  • ${hb_targettype} tipo de proyecto (hbexe, hblib, hbdyn, hbdynvm, hbimplib, hbppo, hbhrb, hbcontainer)
  • ${hb_plat} plataforma seleccionada
  • ${hb_comp} compilador de C seleccionado
  • ${hb_comp_ver} versión del compilador C
  • ${hb_build} nombre del objetivo
  • ${hb_cpu} CPU seleccionada
  • ${hb_work} nombre de la carpeta de trabajo por defecto
  • ${hb_workdynsub} subdirectorio de trabajo por defecto para bibliotecas dinámicas de destino
  • ${hb_dynprefix} prefijo de la librería dinámica
  • ${hb_dynsuffix} sufijo de la librería dinámica
  • ${hb_dynext} extensión de las bibliotecas dinámicas
  • ${hb_ver} versión de Harbour en formato hexadecimal de tres bytes. P.ej.: 030200
  • ${hb_verstr} versión de Harbour en un formato legible para humanos <major>.<minor>.<release><status>. Por ejemplo: 3.2.0dev
  • ${hb_major} número mayor de la versión de Harbour
  • ${hb_minor} número menor de la versión de Harbour
  • ${hb_release} número de versión de lanzamiento de Harbour
  • ${hb_status} estado de la versión de Harbour
  • ${hb_revision} revisión de Harbour
  • ${hb_host_plat} plataforma anfitrión de Harbour
  • ${hb_host_plat_unix} devuelve '1' si la plataforma anfitriona es compatible *nix.
  • ${hb_bin} directorio de los binarios de Harbour
  • ${hb_lib} directorio de las bibliotecas estáticas de Harbour
  • ${hb_lib3rd} directorio de las librerías estáticas de terceros de Harbour
  • ${hb_dyn} directorio de las bibliotecas de enlace dinámico de Harbour
  • ${hb_inc} directorio de las cabeceras de Harbour
  • ${hb_addons} directorio base de los programas adicionales de Harbour
  • ${hb_first} nombre del fichero de código fuente que contiene la función de entrada (sin el directorio ni la extensión)
  • ${hb_outputdir} directorio de salida
  • ${hb_outputname} nombre del archivo de salida (sin extensión)
  • ${hb_level} nivel de recursión del sub-proyecto
  • ${<depname>} devuelve el directorio de archivos de cabecera de la dependencia <depname>, o '1' si no se ha detectado
  • ${<envvar>} devuelve el valor de la variable de entorno <envvar>

Filtros (puedes combinarlos y/o negarlos):

  • {<platform>} selecciona la plataforma. Donde <platform> puede ser cualquiera de los valores aceptados por la opción '-plat='.
  • {<compiler>} selecciona el compilador de código fuente en C. Donde <compiler> puede ser cualquiera de los valores aceptados por la opción '-comp='.
  • {<cpu>} CPU destino. <cpu> puede ser una de: x86, x86_64, ia64, arm, mips, sh
  • {<targettype>} seleciona el tipo del objetivo final. Donde <targettype> es cualquiera de los valores devueltos por la variable macro ${hb_targettype}.
  • {mt} el objetivo final de la construcción es multihilo (ver opción -mt)
  • {st} el objetivo final es monohilo (ver opción -st)
  • {gui} el objetivo final tiene un interfaz gráfico (ver opción -gui)
  • {std} el objetivo es una consola de linea de comandos (ver opción -console)
  • {debug} activa la depuración de código a nivel de C (ver opción -debug)
  • {nodebug} la depuración a nivel C está desactivada (ver la opción -debug-)
  • {shared} construcción en modo compartido (ver -shared y opciones relacionadas)
  • {static} construcción en modo estático (ver -static y opciones relacionadas)
  • {lngcpp} se fuerza el modo C++ (ver la opción -cpp)
  • {lngc} se fuerza el modo C (ver la opción -cpp-)
  • {winuni} modo UNICODE (WIDE) de Windows (ver la opción -winuni)
  • {winansi} modo ANSI de Windows (ver la opción -winuni-)
  • {unix} la plataforma de destino es compatible *nix (bsd, hpux, sunos, beos, qnx, android, vxworks, symbian, linux, darwin, cygwin, minix, aix)
  • {allwin} la plataforma de destino es compatible con Windows (win, wce)
  • {allgcc} el compilador de C de destino pertenece a la familia gcc (gcc, mingw, mingw64, mingwarm, djgpp, gccomf, clang, open64, pcc)
  • {allmingw} el compilador de C de destino es mingw* (mingw, mingw64, mingwarm)
  • {allmsvc} el compilador de C de destino es msvc* (msvc, msvc64, msvcia64, msvcarm)
  • {allbcc} el compilador de C de destino es bcc* (bcc, bcc64)
  • {allpocc} el compilador para el código fuente en C es pocc* (pocc, pocc64, poccarm)
  • {allicc} el compilador para el código fuente en C es icc* (icc, iccia64)
  • {hb10} modo de compatibilidad 'Harbour 1.0.x' (ver opción -hb10)
  • {hb20} modo de compatibilidad 'Harbour 2.0.x' (ver opción -hb20)
  • {hb30} modo de compatibilidad 'Harbour 3.0.x' (ver opción -hb30)
  • {xhb} modo 'xhb' (ver opción -xhb)
  • {hb_ispath='<file|dir>'} el filtro pasará si el nombre <file> o <dir> existe en el disco.
  • {MACRO} el filtro se pasará si el valor de ${MACRO} no está vacio y no es igual a '0' o 'no' (en mayúsculas o minúsculas)
  • {MACRO='<value>'} el filtro pasará si el valor de ${MACRO} es igual a <value> (no diferencia mayúsculas/minúsculas).
  • {MACRO>'<value>'} el filtro pasará si el valor de ${MACRO} es mayor a <value> (no diferencia mayúsculas/minúsculas).
  • {MACRO<'<value>'} el filtro pasará si el valor de ${MACRO} es menor a <value> (no diferencia mayúsculas/minúsculas).

Constantes predefinidas en el código fuente:

  • __HBSCRIPT__HBMK_PLUGIN cuando un archivo de órdenes '.hb' es compilado como un complemento de hbmk2

  • __HBEXTREQ__ cuando un archivo fuente '.hbx' está presente en un proyecto (disponible en el código fuente de Harbour)

  • HBMK_HAS_<hbcname> cuando el paquete <hbcname>.hbc se enlaza al objetivo final. El valor se obtiene de la entrada 'version=' del archivo .hbc, convertido a número decimal, '1' si no se especifica. (disponible en el código fuente de Harbour)

  • HBMK_HAS_<depname> cuando la dependencia <depname> se detectó (disponible en código fuente C)

  • __HBSCRIPT__HBSHELL cuando un archivo de código fuente es ejecutado con el intérprete de comandos

  • <standard Harbour> __PLATFORM__*, __ARCH*BIT__, __*_ENDIAN__, etc...

Constantes predefinidas en ficheros de construcción (disponibles después de '-depfinish=<depname>'/'depfinish=<depname>'):

  • HBMK_HAS_<depname> cuando la dependencia <depname> se detectó
  • HBMK_DIR_<depname> devuelve el directorio de los archivos de cabecera donde <depname> ha sido detectado, o vacio si no.
  • HBMK_HAS_<depname>_LOCAL cuando la dependencia <depname> se detectó en la localización configurada por la opción -decincpathlocal=

Variables de entorno:

  • HBMK_OPTIONS acepta cualquier opción como si fuesen pasadas al comienzo de la línea de comandos

  • HB_PLATFORM admite los mismos valores que la opción -plat=

  • HB_COMPILER admite los mismos valores que la opción -comp=

  • HB_CPU admite los mismos valores que la opción -cpu=

  • HB_BUILD_NAME admite los mismos valores que la opción -build=

  • HB_LANG admite los mismos valores que la opción -lang=

  • HB_USER_LIBS acepta los mismos valores (separados por espacios) que la opción -l

  • HB_USER_LIBPATHS acepta los mismos valores (separados por espacios) que la opción -L

  • HB_USER_PRGFLAGS opciones para pasar al compilador Harbour (antes de las opciones de línea de comandos)

  • HB_USER_CFLAGS opciones para pasar al compilador de C (antes de las opciones de línea de comandos)

  • HB_USER_RESFLAGS opciones a pasar al compilador de recursos (antes de las opciones de línea de comandos)(sólo para Windows)

  • HB_USER_LDFLAGS opciones para ser enviadas al enlazador (ejecutable) (antes de las opciones de la linea de comandos)

  • HB_USER_DFLAGS opciones para ser enviadas al enlazador (librería dinámica) (antes de las opciones de la linea de comandos)

  • HB_USER_AFLAGS opciones para ser enviadas al enlazador (librería estática) (antes de las opciones de la linea de comandos)

  • HB_COMPILER_VER sustituye la autodetección de la versión del compilador de C (sólo para las familias de compiladores gcc y msvc). Formato: <15><00>[.<00>] = <major><minor>[.<revision>]

  • HB_CCPATH sustituye el directorio del compilador de C (sólo para la familia de compiladores gcc)

  • HB_CCPREFIX sustituye el prefijo del ejecutable del compilador de C (sólo para la familia de compiladores gcc)

  • HB_CCSUFFIX sustituye el sufijo del ejecutable del compilador de C (sólo para la familia de compiladores gcc)

  • HB_INSTALL_PREFIX sustituye el directorio base de la instalación de Harbour

  • HB_INSTALL_ADDONS sustituye el directorio base de los complementos de Harbour

  • HB_EXTENSION lista de extensiones para cargar en el intérprete de comandos de Harbour separados por espacio

Directivas .hbc (tienen que ser escritas en líneas separadas):

  • echo=<msg> muestra <msg>
  • skip=[<msg>] omite el procesado del resto del archivo .hbc. Muestra <msg>, si se especifica.
  • stop=[<msg>] detiene la construcción. Muestra <msg>, si se especifica.
  • sources= añade una lista de archivos separados por espacios como archivos de entrada
  • headers= añade una lista de archivos de cabecera .ch separados por espacios como cabeceras estándar
  • libs= añade una lista de bibliotecas separadas por espacios (ver más en la opción -l)
  • frameworks= añade una lista de 'frameworks' separadas por espacios (sólo para Darwin)
  • requests= añade una lista de símbolos separados por espacios para forzar a enlazarlos al objetivo final
  • syslibs= añade una lista de bibliotecas separadas por espacios como bibliotecas del sistema (antes de las bibliotecas normales)
  • hbcs= incrusta una lista de archivos .hbc separados por espacios. Se aceptan nombres sin extensión. Estas referencias se procesan en el sitio.
  • autohbcs= lista de valores separados por espacios como en la opción -autohbc=
  • libpaths= lista de rutas adicionales a bibliotecas separadas por espacios
  • incpaths= añade una lista, separadas por espacio, de rutas adicionales a archivos de cabecera (tanto para Harbour como para C)
  • instfiles= lista de valores separados por espacios como en la opción -instfile=
  • instpaths= lista de valores separados por espacios como en la opción -instpath=
  • prgflags= lista de valores separados por espacios como en la opción -prgflag=
  • cflags= lista de valores separados por espacios como en la opción -cflag=
  • resflags= lista de valores separados por espacios como en la opción -resflag=
  • ldflags= lista de valores separados por espacios como en la opción -ldflag=
  • ldflags+= lista de valores separados por espacios como en la opción -ldflag+=
  • dflags= lista de valores separados por espacios como en la opción -dflag=
  • dflags+= lista de valores separados por espacios como en la opción -dflag+=
  • pflags= lista de valores separados por espacios como en la opción -pflag=
  • psources= lista de valores separados por espacios como en la opción -pi=
  • gui=<bool> opción 'yes' = -gui, 'no' = -std
  • mt=<bool> opción 'yes' = -mt, 'no' = -st
  • pic=<bool> opción 'yes' = -pic, 'no' = -pic-
  • shared=<bool> opción 'yes' = -shared, 'no' = -static
  • shareddef=<bool> similar a 'shared=', pero sólo funciona si no fue establecido anteriormente el modo compartido/estático
  • fullstatic=<bool> opción 'yes' = -fullstatic, 'no' = -static
  • debug=<bool> opción 'yes' = -debug, 'no' = -debug-
  • optim= opción 'yes' = -optim, 'no' = -optim-
  • nulrdd=<bool> opción 'yes' = -nulrdd, 'no' = -nulrdd-
  • nodefgt=<bool> opción 'yes' = -nodefgt, 'no' = -nodefgt-
  • map=<bool> opción 'yes' = -map, 'no' = -map-
  • hbcppmm=<bool> opción 'yes' = -hbcpmm, 'no' = -hbcpmm-
  • implib=<bool> opción 'yes' = -implib, 'no' = -implib-
  • winuni=<bool> opción 'yes' = -winuni, 'no' = -winuni-
  • strip=<bool> opción 'yes' = -strip, 'no' = -strip-
  • run=<bool> opción 'yes' = -run, 'no' = -run-
  • inc=<bool> opción 'yes' = -inc, 'no' = -inc-
  • safe=<bool> opción 'yes' = -safe, 'no' = -safe-
  • cpp= el mismo que la opción -cpp=
  • warn= el mismo que la opción -warn=
  • compr= el mismo que la opción -compr=
  • head= el mismo que la opción -head=
  • plugins= lista de complementos de hbmk2 a cargar separados por espacios
  • gt=<name> el mismo que la opción -gt<name>
  • gtdef=<name> establece el GT por defecto a usar
  • env= el mismo que la opción -env:
  • deppkgname= el mismo que la opción -deppkgname=
  • depkeyhead= el mismo que la opción -depkeyhead=
  • depoptional= el mismo que la opción -depoptional=
  • depcontrol= el mismo que la opción -depcontrol=
  • depincroot= el mismo que la opción -depincroot=
  • depincpath= el mismo que la opción -depincpath=
  • depincpathlocal= el mismo que la opción -depincpathlocal=
  • depimplibs= el mismo que la opción -depimplibs=
  • depimplibd= el mismo que la opción -depimplibd=
  • depfinish= el mismo que la opción -depfinish=
  • name= nombre del paquete
  • description= descripción del paquete
  • version=<x.y.z> número de versión del paquete, donde x.y.z >= 0 <= 255. Si no se especifica se usa el valor por defecto '0.0.1'.
  • keywords= lista de palabras clave separadas por espacios
  • licences= lista de licencias separadas por espacios
  • repository= lista de referencia a archivos fuentes del repositorio separadas por espacios

API del complemento:
('hbmk' es la variable de contexto recibida por la función de entrada del complemento)

  • hbmk_Register_Input_File_Extension( hbmk, <cExt> ) -> NIL
    Registra la extensión de archivo de entrada para ser pasada a un complemento (por defecto, todos los archivos con extensión desconocida se pasan al compilador Harbour).
  • hbmk_AddInput_PRG( hbmk, <cFileName> ) -> NIL
    Añade un archivo de entrada de Harbour al proyecto.
  • hbmk_AddInput_C( hbmk, <cFileName> ) -> NIL
    Añade un archivo de entrada de C al proyecto.
  • hbmk_AddInput_CPP( hbmk, <cFileName> ) -> NIL
    Añade un archivo de entrada de C++ al proyecto.
  • hbmk_AddInput_RC( hbmk, <cFileName> ) -> NIL
    Añade un archivo de entrda de recursos de Windows al proyecto.
  • hbmk_AddInput_OBJ( hbmk, <cFileName> ) -> NIL
    Añade un archivo objeto binario al proyecto.
  • hbmk_AddInput_INSTFILE( hbmk, <cFileName>, [<cGroup>] ) -> NIL
    Añade un archivo para instalar, con un nombre de grupo -instpath= opcional.
  • hbmk_OutStd( hbmk, <cText> ) -> NIL
    Envia el texto de salida a la salida estándar.
  • hbmk_OutErr( hbmk, <cText> ) -> NIL
    Envia el texto de salida a la salida estándar de errores.
  • hbmk_OutStdRaw( hbmk, ... ) -> NIL
    Salida de texto a la salida estándar sin ningún formato.
  • hbmk_OutErrRaw( hbmk, ... ) -> NIL
    Salida de texto a la salida estándar de errores sin ningún formato.
  • hbmk_Macro( hbmk, <cMacro> ) -> <cResult>
    Evalúa la expresión macro hbmk2
  • hbmk_FNameEscape( hbmk, <cFileName> ) -> <cFileName>
    El nombre de archivo tiene que estar entrecomillado para usarlo como parámetro de comando externo.
  • hbmk_PathSepToTarget( hbmk, <cFileName> ) -> <cFileName>
    Convierte el nombre del archivo al formato que necesita la plataforma/compilador de C.
  • hbmk_PathSepToForward( <cPath> ) -> <cPath>
    Convierte el nombre de archivo para que tenga barras inclinadas como separadores de directorios.
  • hbmk_PathFromWorkdirToCWD( hbmk ) -> <cRelativePath>
    Devuelve la ruta relativa al valor de -workdir= para el directorio de trabajo actual.
  • hbmk_FindInPath( <cFileName>, [<xPath>], [<aExtDef>] ) -> <cFNFound> | NIL
    Busca el archivo en <xPath> (se admite una matriz o una cadena delimitada con separadores de ruta) con una lista de extensiones alternativas <aExtDef> (por defecto ejecutables binarios). Devuelve un nombre de archivo si se encuentra, NIL si no.
  • hbmk_FNameDirExtSet( <cFileName>, [<cDirNew>], [<cExtNew>] ) -> <cFileName>
    Modifica el directorio y/o extensión del nombre del archivo
  • hbmk_FuncNameEncode( <cFuncName> ) -> <cFuncNameEncoded>
    Codifica el nombre de la función de acuerdo a las reglas del compilador Harbour para formar los nombres de función HB_FUNC() en el código C.
  • hbmk_StrStripQuote( <cString> ) -> <cString>
    Elimina el cierre de las dobles comillas de la cadena.
  • hbmk_ArrayToList( <aList>, [<cSeparator>] ) -> <cList>
    Convierte una lista de cadenas a una cadena. Por defecto el separador es un espacio.

Variables del complemento:
(elementos del parámetro de contexto 'hbmk', diferencia mayúsculas/minúsculas, solo lectura salvo que se haya establecido lo contrario)

  • "apiver" versión del API como un número entero
  • "cSTATE" estado de la llamada al complemento. Puede ser: 'init', 'pre_all', 'pre_prg', 'pre_res', 'pre_c', 'pre_link', 'pre_lib', 'pre_cleanup', 'post_build', 'post_all'
  • "params" matriz de parámetros pasada al complemento vía opción -pflag=/pi= o que tenga una extensión registrada vía hbmk_Register_Input_File_Extension()
  • "vars" 'hash' de variables para uso del complemento. Modificable, local para cada complemento.
  • "cPLAT" valor de -plat
  • "cCOMP" valor de -comp
  • "nCOMPVer" contiene el valor de la variable de entorno HB_COMPILER_VER
  • "cCPU" valor de -cpu
  • "cBUILD" valor de -build=
  • "cOUTPUTNAME" valor de -o
  • "cTARGETNAME" contiene el valor de la macro ${hb_targetname}
  • "cTARGETTYPE" contiene el valor de la macro ${hb_targettype}
  • "lREBUILD" estado de la opción -rebuild
  • "lCLEAN" estado de la opción -clean
  • "lDEBUG" estado de la opción -debug
  • "lMAP" estado de la opción -map
  • "lSTRIP" estado de la opción -strip
  • "lDONTEXEC" estado de la opción -traceonly
  • "lIGNOREERROR" estado de la opción -ignore
  • "lTRACE" estado de la opción -trace
  • "lQUIET" estado de la opción -q
  • "lINFO" estado de la opción -info
  • "lBEEP" estado de la opción -beep
  • "lRUN" estado de la opción -run
  • "lINC" estado de la opción -inc
  • "cCCPATH" contiene el valor de la variable de entorno HB_CCPATH
  • "cCCPREFIX" contiene el valor de la variable de entorno HB_CCPREFIX
  • "cCCSUFFIX" contiene el valor de la variable de entorno HB_CCSUFFIX
  • "cCCEXT" contiene el valor de la variable de entorno HB_CCEXT
  • "cWorkDir" valor de -workdir=
  • "nExitCode" código de salida actual

API del intérprete de comandos disponible en los archivos de órdenes de Harbour:

  • hbshell_gtSelect( [<cGT>] ) -> NIL
    Cambia el GT. Por defecto [*]: 'gtwin'
  • hbshell_Clipper() -> NIL
    Activa modo de compatibilidad 'Clipper' (sin Unicode).
  • hbshell_include( <cHeader> ) -> <lSuccess>
    Carga la cabecera de Harbour.
  • hbshell_uninclude( <cHeader> ) -> <lSuccess>
    Descarga la cabecera de Harbour.
  • hbshell_include_list() -> NIL
    Muestra la lista de cabeceras de Harbour cargadas.
  • hbshell_ext_load( <cPackageName> ) -> <lSuccess>
    Carga el paquete en memoria. Similar a la directiva de preprocesado #request.
  • hbshell_ext_unload( <cPackageName> ) -> <lSuccess>
    Descarga el paquete de la memoria.
  • hbshell_ext_get_list() -> <aPackages>
    Lista de paquetes cargados.
  • hbshell_DirBase() -> <cBaseDir>
    hb_DirBase() no está mapeada para el uso en archivo de órdenes.
  • hbshell_ProgName() -> <cPath>
    hb_ProgName() no está mapeada para el uso en archivo de órdenes.

Ejemplos para comenzar con hbmk2:

  • Ejecuta el intérprete de comandos interactivo ('dot' prompt)
    $ hbmk2 .
  • Ejecuta un archivo de órdenes de Harbour
    $ hbmk2 myscript.hb [<parameter[s]>]

Ejemplos para construir y ejecutar binarios portables Harbour (conocidos como archivos de órdenes precompilados de Harbour):

  • Construye
    $ hbmk2 -gh myscript.hb
  • Ejecuta el resultado de lo anterior
    $ hbmk2 myscript.hrb [<parameter[s]>]

Ejemplos para construir una aplicación con Harbour:

  • Contruye un simple '.prg'
    $ hbmk2 hello.prg
  • Construye una aplicación con varios archivos fuentes con extensión '.prg' en modo incremental
    $ hbmk2 mymain.prg myfuncs.prg -inc
  • Construye una aplicación utilizando un fichero de proyecto
    $ hbmk2 myapp.hbp
  • Construye una aplicación usando el modo incremental
    $ hbmk2 myapp.hbp -inc
  • Construye una aplicación que utilice un paquete de las contribuciones o un paquete de terceros (aplicaciones adicionales) que incorporen un archivo .hbc
    $ hbmk2 myapp.prg hbct.hbc
  • Construye una aplicación que usa una biblioteca
    $ hbmk2 myapp.prg -lmylib -L<path_to_mylib>
  • Construye una aplicación que usa un archivo de recursos de Windows
    $ hbmk2 mymain.prg myres.rc
  • Construye una aplicación que se enlaza con la bibliotecas dinámicas de Harbour
    $ hbmk2 -shared myapp.prg
  • Construye una aplicación con todos los archivos fuentes en '.prg' y '.c' que se encuentren en el subdirectorio 'source'
    $ hbmk2 -omyapp src/*.prg src/*.c

Ejemplos para construir una biblioteca estática con Harbour:

  • Construye la librería 'mylib' desde el código fuente
    $ hbmk2 -hblib mylibsrc.prg -omylib
  • Contruye una biblioteca 'mylib' desde el código fuente usando el modo incremental
    $ hbmk2 -hblib mylibsrc.prg -omylib -inc

Códigos de salida ("errorlevels"):

  • 0 sin errores
  • 1 plataforma desconocida
  • 2 compilador desconocido
  • 3 no se pudo detectar Harbour
  • 5 no se pudo crear fragmento de código
  • 6 fallo al compilar (Harbour, compilador de C, compilador de recursos)
  • 7 fallo en el ensamblaje final (enlazador o gestor de bibliotecas)
  • 8 no soportado
  • 9 error al crear el directorio de trabajo
  • 19 ayuda
  • 10 dependencia no encontrada o desactivada
  • 20 inicio del complemento
  • 30 demasiado número de anidamientos
  • 50 parada solicitada
  • <other> cuando se utilice la opción -run, el código de salida será el que devuelva el ejecutable de destino

Notas:

  • <script> puede ser:
    <@script> o <script.hbm>: opciones de la línea de comandos en un archivo
    <script.hbp>: opciones de la línea de comandos en un archivo, también marca un nuevo objetivo final si se especifica en la línea de comandos
    <script.hbc>: archivo de configuración de paquetes de Harbour

  • Un nombre de archivo fuente sin extensión cargará el archivo .hbp, si este existe en el directorio actual. Si no, la extensión .prg será usada.

  • Múltiples parámetros son aceptados -l, -L, -i y <script>.

  • Las opciones normales del compilador Harbour también son aceptadas.
    (se pueden ver con la opción -harbourhelp)

  • El archivo de opciones hbmk.hbc que exista en el directorio del hbmk2 siempre es procesado. En plataformas *nix este archivo es buscado en ~/.harbour, /etc/harbour, <base>/etc/harbour, <base>/etc (por este orden) antes del directorio de hbmk2.

  • El archivo de órdenes hbmk.hbm en el directorio actual siempre se procesa, si existe.

  • Se recomienda usar barras inclinadas en los valores de opciones de directorios, pero tambien se aceptan igualmente barras invertidas.

  • Se aceptan filtros para plataformas en cada linea de archivo '.hbc' y en la mayoría de las opciones.
    Los filtros pueden ser combinados usando los operadores '&' (y), '|' (o), negados por el operador '!' y agrupados por paréntesis. Ej.: {win}, {gcc}, {linux|darwin}, {win&!pocc}, {(win|linux)&!watcom}, {unix&mt&gui}, -cflag={win}-DMYDEF, -stop{dos}, -stop{!allwin}

  • La mayoría de la líneas de un fichero .hbc (libs=, hbcs=, prgflags=, cflags=, ldflags=, libpaths=, instfiles=, instpaths=, echo=) y sus correspondientes parámetros de línea de comandos aceptan variables de macro. libpaths= también acepta %{hb_name} que se transforma en el nombre del fichero .hbc bajo búsqueda.

  • Tambien acepta Opciones de macros sustitución de comandos. Incluya comando dentro de ``, y, si el comando contiene espacios, también entre comillas dobles. F.e. "-cflag==`wx-config -cflags`", o ldflags={unix&gcc}"`wx-config --libs`".

  • Cuando varias opciones de selección del tipo de objetivo final (-hblib, -hbdyn, etc.) son especificados, el primero será el elegido, el resto será ignorado silenciosamente.

  • Bibliotecas y archivos objeto construidos con/para CA-Cl*pper no funcionarán con ningún compilador/plataforma soportados.

  • Valores por defecto y caracteristicas soportadas pueden variar entre plataformas/compiladores.

  • No es necesario para ejecutar hbmk2 la herramienta GNU Make o cualquier otra utilidad 'make' específica de un compilador C o de MSYS (en Windows).

  • Si se pasa el . (punto) como primer parámetro se entrará en el intérprete de comandos interactivo.

  • El archivo .hb, .hrb o .dbf pasado como primer parámetro será ejecutado como un archivo de órdenes. Si el nombre del archivo no contiene componentes de una ruta, será buscado en el directorio actual y en el PATH. Si no se especifica una extensión, se buscarán las extensiones .hb y .hrb en ese orden. Los archivos .dbf se abrirán automáticamente en modo compartido y el intérprete de comandos de Harbour será iniciado. Las extensiones no-estandar se autodetectarán para archivos de tipo fuente y archivos de órdenes precompilados. Nótese, que para los archivos de órdenes de Harbour, la página de códigos establecida por defecto es la UTF-8. El archivo de cabecera principal 'hb.ch' es incluido automáticamente como #include. El formato de fecha por defecto es el estandar ISO: yyyy-mm-dd. El GT por defecto es 'gtcgi', excepto que se detecten llamadas CUI de pantalla completa, en cuyo caso el GT 'gtwin' [*] se selecciona automáticamente (excepto para los INIT PROCEDURE).

  • Puede utilizar las teclas <Alt+V> en el indicador de comandos interactivo de Harbour para pegar texto desde el portapapeles.

  • Los valores marcados con [*] pueden depender de la plataforma anfitriona y/o la configuración. Esta ayuda se generó en una plataforma anfitriona 'win'.

Valores soportados de <compiler> para cada valor de <platform>:

  • linux gcc, clang, icc, watcom, sunpro, open64
  • darwin gcc, clang, icc
  • win mingw, msvc, clang, bcc, bcc64, watcom, icc, pocc, xcc, mingw64, msvc64, msvcia64, iccia64, pocc64
  • wce mingwarm, mingw, msvcarm, poccarm
  • os2 gcc, gccomf, watcom
  • dos djgpp, watcom
  • bsd gcc, clang, pcc
  • hpux gcc
  • beos gcc
  • qnx gcc
  • android gcc, gccarm
  • vxworks gcc, diab
  • symbian gcc
  • cygwin gcc
  • minix clang, gcc
  • aix gcc
  • sunos gcc, sunpro

Licencia:

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
their web site at http://www.gnu.org/).

License extensions:
- This source code must be kept and distributed as part
of the Harbour package and/or the placement of the tool sources
and files must reflect that it is part of Harbour Project.
- Copyright information must always be presented by
projects including this tool or help text.
- Modified versions of the tool must clearly state this
fact on the copyright screen.
- Source code modifications shall always be made available
along with binaries.
- Help text and documentation is licensed under
Creative Commons Attribution-ShareAlike 3.0:
http://creativecommons.org/licenses/by-sa/3.0/

Autor:

  • Viktor Szakats (vszakats.net/harbour)