Hola,
he necesitado de esta lista para compilar y ejecutar mi jueguecito en Bennu, y creo que será de utilidad para alguno. Son los parámetros que puede tomar el ejecutable:
Use: bgdc [options] filename
-d Debugging mode
-o ouputfile Ouput DCB file
-i dir Adds the directory to the PATH
-a Automaticaly adds all files to the DCB
-f file Adds a single file to the DCB
-l lang Specify locale settings
-s stub Generate a stubbed executable from the given stub
-g Stores debugging information at the DCB
-c File uses the MS-DOS character set
-D macro=text Set a macro
-p|--pedantic Don't use automatic declare
--libmode Build a library
-L library Include a library
-C options Specify compiler options
Where options are:
a Enable automatic declare functions
Compiling multiple sources:
Se pueden compilar múltiples fuentes desde la línea de comandos (como #include).
Modo de uso:
> bgdc prg1.prg prg2.prg
Debugging mode ( -d):
Modo debug. Permite ejecutar la consola para visualizar el estado de la ejecución (Ctrl + C):
* estado de los procesos
* visualizar/cambiar los valores de las variables, estructuras
* ...
Modo de uso:
> bgdc.exe mi_programa.prg -d
Adds the directory to the PATH ( -i dir):
Añade el directorio dir al PATH.
Modo de uso:
> bgdc.exe mi_programa.prg -i \DATA\
> bgdc.exe mi_programa.prg -i \DATA\ -i \USR\SRC\BIN\ -i \DATA\STUB\
Output DCB file (name) (-o outputfile) :
Cambia el nombre de salida del dcb a outputfile. Sus extensiones pueden ser dcb, dat o bin.
Modo de uso:
> bgdc.exe mi_programa.prg -o juego.dcb
Automaticaly adds all files to the DCB ( -a):
Añade todos los archivos al DCB. Todos los archivos (wav, ogg, map, pal, fpg, ...) son añadidos automáticamente al DCB. Los archivos de librerías DLL no se añaden al DCB.
Modo de uso:
> bgdc.exe mi_programa.prg -a
Adds a single file to the DCB ( -f file):
Añade un archivo al DCB. También se pueden añadir varios archivos nombrándolas uno a uno:
Modo de uso:
> bgdc.exe mi_programa.prg -f menu.fpg
> bgdc.exe mi_programa.prg -f menu.fpg
-f menu.ogg
-f menu.map
o, definirse a un archivo tipo listado en el que se enumeran todos los archivos a incluir. En este último caso, se definiría de la siguiente forma:
> bgdc.exe mi_programa.prg -f @include_files.lst <-- el archivo-lista debe llamarse include_files.lst
-f @sound_files.lst <-- el archivo-lista debe llamarse sound_files.lstp
Specify locale settings ( -l lang):
Obsoleto.
Generate a stubbed executable from the given stub ( -s stub):
Genera un ejecutable con el intérprete y el DCB integrado.
Modo de uso:
> bgdc.exe mi_programa.prg -s bgdi.exe
No es necesario llamar al stub con path absoluto; si existe en el mismo directorio de trabajo que el compilador es suficiente.
Nota: No se crea ningún dcb intermedio. Se crea directamente el ejecutable (.exe) con el stub y el dcb dentro.
Stores debugging information at the DCB ( -g):
Guarda información de debug en el DCB (no sé exáctamente qué es).
Modo de uso:
> bgdc.exe mi_programa.prg -g
File uses the MS-DOS character set ( -c):
Señala al copilador que nuestro código contiene carácteres de MS-DOS (ahora en desuso). Estos carácteres aparecen en ejemplos de DIV y DIV2 generalmente. Recordad que es una "c" en minúscula, mientras que en mayúscula significa opciones de compilación especiales.
Modo de uso:
> bgdc.exe mi_programa.prg -c
Set a macro ( -D macro=text):
Envía un macro al compilador. Un macro puede ser la definición de una constante, como DEBUG, ANCHO_PANTALLA=640 ALTO_PANTALLA=480 ó BUFFER=100.
-D DEBUG :
> bgdc.exe -D DEBUG mi_programa.prg
> bgdc.exe -D DEBUG -D BUFFER=100 -D MAX_NPC=1000 mi_programa.prg
y luego en tu codigo poner:
#ifdef DEBUG
...
#endif
Con esto se puede usar código que solo se ejecute en modo debug cuando lo compilas en modo debug. Lo mismo en FULL y RELEASE ( -D FULL, -D RELEASE). Sería como un #define, pero al no estar en el código, permite flexibilidad para compilar diferentes versiones sin tener que tocar el código.
Lo mismo para el macro:
-D BUFFER=100
donde en el código se podría poner:
array[BUFFER] = "Última posición en el array";
Build a library ( --libmode):
La salida del compilador será una librería hecha en Bennu, pero en formato dbl (en vez de dcb).
Modo de uso:
> bgdc.exe --libmode mi_programa.prg
Include a library ( -L library):-L library
Incluye específicamente una librería de Bennu (dbl).
Modo de uso:
> bgdc.exe -L nombre_librearía.dbl mi_programa.prg
> bgdc.exe -L nombre_librearía.dbl -L lib2.dbl -L lib3.dbl mi_programa.prg
Specify compiler options ( -C options):
a Enable automatic declare functions:
Permite la declaración de funciones automáticamente. Muy útil cuando no queramos declarar las funciones, pero tiene sus contraindicaciones, posibles bugs y descenso de efectividad en tiempo de ejecución. Utiliza como parámetro una "c" en mayúscula y los parámetros siguientes pueden ir juntos o aparte.
Modo de uso:
> bgdc.exe mi_programa.prg -C a
> bgdc.exe mi_programa.prg -Ca
Ahora mismo es necesario compilar como bgdc.exe -C a si no tienes definidos las funciones...
Y la definición de las funciones serían de esta manera:
Declare menu(); end
Declare nave_enemigo(x,y); end
Declare prota(x,y, vida, nivel); end
Un Declare por cada. Si no, se puede ordenar las funciones (cuando digo funciones digo también procesos) según el uso; tener escrito en nuestro código antes de su llamada.
:D muy util gracias
No está totalmente completa. Si conocéis qué hace álguno de los parámetros que no conozco o simplemente, pensáis que necesita una descripción mejor, responded en este hilo e iré mejorándolo.
Las macros son constantes que puedes definir desde linea de comando, y sirven para muchas cosas, por ejemplo, habilitar o deshabilitar partes de tu codigo, o seleccionar funcionalidades diferentes en tu proyecto (por ejemplo, generar un proyecto en modo demo o modo release), o por ejemplo, poder definir constantes que te serviran luego en tu codigo, por ejemplo, ANCHO_PANTALLA=800 y luego si usas en tu codigo ANCHO_PANTALLA es lo mismo que poner 800, son como defines, pero no puedes usar la sintaxis de parametros de los defines...
Los parametros por ejemplo el -C no es necesario poner un espacio para poner la subopcion, se puede usar directamente -Ca
-l es el archivo de lenguaje de los mensajes, algo asi como el gettext (no lo he probado, pero supuestamente funciona)
Un duda:
si quiero insertar el ejecutable bgdi.exe como stub con el parámetro -d ( bgdc.exe -s bgdi.exe ... ), el archivo stub debe ir con el path completo? Como lo lleva el bgdc.exe?
Creo que sí... ya que al ejecutarlo como si fuese un archivo local (sin path completo), la compilación no me da errores, pero no se ejecuta.
Si esta en el mismo directorio que el bgdc, no hace falta ponerle el path... es mas, te diria que no lo pongas...
Pues me da problemas el parámetro de stub. Ejecuto de esta manera:
path\..\bgdc.exe -g -s bgdi.exe -Ca path\..\mijuego.prg
Se compila bien; no hay errores. Pero, no se ejecuta el juego. Me he saltado algo?
claro, tenes que estar en el path del prg... o sea, no tenes que ponerle el path...
No lo he entendido. Parece que esa llamada funcione debo estar en el directorio del prg? Y si quiero ejecutarlo desde el directorio donde está el FBMX (o sea, desde la IDE). Entonces, el path del stub, cómo iría? Como las demás? Con path absoluto?
La verdad que no recuerdo bien como es, y dispongo de cero tiempo para probarlo o revisar el codigo, probaste todas las opciones posibles?
Lo he probado en la consola, dentro del directorio donde tengo instalado Bennu, de la siguiente forma:
bgdc -g -s bgdi -Ca D:\prueba\prueba1.prg
Me ha compilado y generado el .exe correctamente.
*************
Tambien he probado ubicando el interprete en otro directorio diferente al del compilador:
bgdc -g -s E:\prueba2\bgdi.exe -Ca D:\prueba1\prueba1.prg
Funciona correctamente.
No se si te servira de algo. :-[
P.D. se me olvidaba, gracias por la lista detallada de los parametros. Es realmente muy util, gracias!
ya he encontrado el "error". A decir verdad, no era un error. Si no, que al generarse un .exe directamente, (no se crea un .dcb) pensaba que había algún problema porque no se ejecutaba la dcb. Resumiendo, no hay ningún problema en bgdc con el parámetro -s stub. hay que tener cuidado para que no se nos olvide, que se crea un .exe directamente.
PD. Actualizo la info de los parámetros.
Bueno haré los cambios cuando el ratón me haga caso y el ordenador deje de ronronear...
Creo que sos la unica persona que no sabia que no se crea un dcb sino en exe... esto se explico muchas veces... jejeje... dicen que el que comete errores es porque hace cosas...
Es lógico que no se crea una dcb intermedia, pero en el momento no me llegó la luz.
Aún así, me faltan por documentar varios parámetros y creo que he liado los parámetros -d y -g.
-d es debug de la ejecucion del programa (compilador o interprete)
-g es dcb con informacion de debug (para poder debuguear el juego)
una duda...
¿con que parametros debo ejecutar el .prg o el .dcb para poder activar la consola de debug pulsando Alt+c?
Porque he probado con los parametros -d -Ca en el compilador y -d en el interprete y no consigo sacar la consola de debug...
¿o acaso se ha retirado la consola para mejorarla?
-g
gracias maestro ;)
No se que pensais vosotros pero os cuento:
File uses the MS-DOS character set ( -c):
Señala al copilador que nuestro código contiene carácteres de MS-DOS (ahora en desuso). Estos carácteres aparecen en ejemplos de DIV y DIV2 generalmente. Recordad que es una "c" en minúscula, mientras que en mayúscula significa opciones de compilación especiales.
Si Bennu no funciona bajo MS-DOS no se deberia eliminar esta opcion??? y es más... si yo no compilo con "-c" no puedo ver las "ñ" aunque no se quitara la opcion "-c" lo logico es que para ver una "ñ" no hiciera falta compilar con "-c" no??????
Bueno a ver si actualizo un poco esto de los parámetros. Y de paso también pongo chulo la parte de compilar en Bennu directamente desde Flamebird MX.
He corregido un pequeño error que había en el primer post.
Hay alguna forma de añadir las dlls al exe aunque sea manualmente?
Quote from: Danielo515 on March 01, 2009, 08:54:14 PM
Hay alguna forma de añadir las dlls al exe aunque sea manualmente?
Repito esta pregunta, también me interesaría conocer la respuesta.
algo al estilo -a pero que incluya también las dlls no existe ¿no?. Algo integrado de bennu sin usar programas externos como packator.
de manera standard, no es posible...
quizas usando libffi, si... pero todavia tengo que ver como esta actualmente esta lib.
Gracias por la descripcion sobre los parametros avanzados!!
Seguro que usare alguno!
El -g es BÁSICO e IMPRESCINDIBLE a la hora de compilar (sin olvidar meter el mod_debug), sobre todo porque la depuración con la consola (alt+c) es muy sencilla... y siempre es posible que sea necesario usar alt+x para forzar la salida cuando se queda "pillado" ^^U
Hola, apenas he trabajado con los parámetros avanzados, sólo en su día para probarlos, pero ahora tengo una necesidad:
Estamos cerrando un videojuego con Bennu3D, le hemos hecho un trailer e incluso un logo propio, y acabamos de crear un stubbed .exe con el parámetro -s
Hemos tenido que usar Exe Icon Changer para cambiar el icono del ejecutable por el nuestro, ¿Hay otra forma más correcta de hacerlo?
Y la duda más importante, en la descripción del .exe sigue saliendo "BGDI Bennu Game Development...", ¿Hay alguna forma de cambiarlo sin tener que usar un programa para ello?
Grasias :D
nop, eso es un resource del exe.
Tengo el compilador y el intérprete en el mismo directorio que el fichero de código .prg
Uso:
bgdc.exe spd.prg -a -s bgdi.exe
Y compila correctamente y me genera un .exe que ocupa tanto como la carpeta, así que imagino que incluye todos los recursos... Pero el caso es que al ejecutar me da error:
"No se encuentra libbgdrtm.dll"
¿Me se escapa algo?
Para que pones bgdi.exe en la llamada !?
Esa dll me imagino que aunque generes un exe con todo quede fuera ya que es el bennu en si, y dentro igual sólo pone los modulos, como nunca lo he probado tampoco se decirte, hasta ahora sólo he puesto recursos en la mochila y no dll's.
las dlls no se incluyen.
para hacer lo que queres, se necesitaria hacer algo parecido al instalador de bennugd, pero este demora un poquito en arrancar y necesita espacio en disco para descomprimirse.
¿Las dll no se incluyen? Si no tengo la carpeta /dll con todas las dll que uso dentro no me compila.
Usaría packator, pero me parece bastante "sucio", supón que se trata de hacer un juego "comercial" y quieres tener simplemente el .exe con el juego, ¿Se podría hacer eso con los parámetros de bgdc?
las dlls no se incluyen dentro del ejecutable.
todo juego comercial tiene dlls, incluso muchos las menten en el directorio de windows.
te digo mas, los juegos que no tienen dlls y/o pocos archivos, son pocos juegos homebrew.
no recuerdo ningun juego comercial serio con 1 solo ejecutable o archivo, por el contrario, cuanto mas archivos tienen, dan mas aspecto profesional, ya que dan sensacion de complejidad de mucho trabajo invertido.
Sí, eso lo entendí, he dejado las dll fuera en la misma ruta del .exe para hacer la distribución con el .exe y las dll (He puesto todas porque mejor que sobren xD), pero sigue dándome el mismo error.
Lo que quiero que quede dentro del .exe son el resto de carpetas con ficheros prg secundarios, música, gráficos, etc.
Vamos, supongo que no es ninguna cosa rara lo que pretendo... ???
ah, una cosa a tener en cuenta, o varias...
1) si en tu codigo compones los nombres de los recursos a cargar (sumando strings), entonces bennugd, no sabra que adicionar el dcb. Los paths deben ser completos o relativos, pero no se deben componer sumando strings ni formateandolas. por ejemplo: path + nombre + ".fpg" (esto no va), lo correcto es "fpg/nave001.fpg"
2) si tu caso fuera el anterior, entonces tenes que adicionar recurso por recurso a mano con el parametro -f.
otra opcion es poner en algun lugar, un array de strings con todos los paths completos de los archivos que queres incluir, es una porqueria, pero es la unica forma de que bennugd sepa que incluir en el dcb.
otra cosa, la libbgdrtm.dll no esta con los modulos, esta en la carpeta de bin o donde esta el bgdc y bgdi, deberias copiarla.
ivan, avisame si estas y te pego un llamado.
gracias! karma!
Actualizado la lista de parámetros.
PD: Juan, si me compruebas que el órden de los paráms está bien o si los he puesto al revés.
dime exactamente cual es la duda que no me queda claro... disculpa.
Quote from: SplinterGU on July 19, 2011, 07:03:24 PM
dime exactamente cual es la duda que no me queda claro... disculpa.
Si el uso es:
bgdc [options] filename
yo lo he puesto:
> bgdc.exe mi_programa.prg -f @include_files.lst
Creo que está al revés, ¿verdad?
en la mayoria de los casos da igual, pero es recomendable que se ponga opciones y luego los files.
Actualizada la lista de parámetros. Añadidos -L y --libmode. Corregido -D macro. Falta -p/--pedantic.
gracias izubiaurre! karma!
La lista de Paths, files o librarys a añadir, ¿se listan con comillas o sin comillas?, ¿o de ambas formas? ¿Mejor con comillas si tenemos directorios tipo "/Mi juego/"?
La entrada -L indica lo siguiente:
-L library Include a library
¿Sólo se puede añadir una única librería o varias?
Si fuese posible añadir varias librerías dbl, el sintaxis sería??
> bgdc.exe miprg.prg -L milib.dbl milib2.dbl milib3.dbl
Otra cosa:
Al definir una macro, -D macro=text ¿si queremos definir más de uno? ¿Cómo lo hacemos?
> bgdc.exe miprg.prg -D BUFFER=100 MAX_NPJ=1000 DEBUG
¿Espaciándolos? ¿Con comas? ...??
no, cada parametro define 1, si queres mas de 1, repetis el parametro.
Entonces, para los include library:
> bgdc.exe miprg.prg -L milib.dbl -L milib2.dbl -L milib3.dbl
y para los macro
> bgdc.exe miprg.prg -D debug -D BUFEER=100 -D MAX_NPJ=1000
y para añadir los PATH tambien?
> bgdc.exe miprg.prg -i \DATA\ -i \FPG\ -i \BIN\exec\stub\
si.
tambien.
pregunta, que has hecho? no veo el texto que has escrito, tuve que marcarlo para verlo.
No sé por qué no se ve. Puede ser que estoy haciendo pruebas con el tema y puede ser por eso.
Voy a actualizar el documento. De paso pregunto, hay algún orden específico para poner los parámetros o alguna exclusión especial entre parámetros como por ejemplo entre -Ca y --pedantic.
Actualizado.
Quote from: izubiaurre on February 14, 2012, 08:19:57 AM
No sé por qué no se ve. Puede ser que estoy haciendo pruebas con el tema y puede ser por eso.
Voy a actualizar el documento. De paso pregunto, hay algún orden específico para poner los parámetros o alguna exclusión especial entre parámetros como por ejemplo entre -Ca y --pedantic.
ya veo, estas haciendo pruebas con tu theme negro, los que tenemos el otro theme no vemos si usas colores mas o menos claros, esto es un problema.
Otra duda más: para agregar los ficheros listados en un .lst, si le ponemos el @ por delante por ejemplo: -f @lista1.lst, si ese fichero/lista está en una carpeta de nombre compuesto o el fichero tiene nombre compuesto, cómo se escribiría:
-f "@nombre compuesto.lst" ó -f @"nombre compuesto.lst"
????
no entiendo, nombre compuesto te referis a con espacios?
si es asi, tenes que encomillar todo el parametro...
"-f@lala 2.txt"
eso por linea de comandos.
El parámetro también? Y sin espacios?
parametro + valor encerrado entre comillas (1 solo par de comillas), ponle los espacios que quieras luego.
Te preguntaba porque se me hacía raro verlo así.
bgdc.exe mi_programa.prg -f "mi fpg.fpg" "-f @mi lista.lst"
Sería correcto entonces. Es que aún lo veo raro esa comilla delante del parámetro.
Gracias por la ayuda
mmm... bueno, segun tengo montado el parser, las 2 opciones podrian ser validas...
mientras haya un espacio entre -f y el valor, el valor puede estar encerrado el solo entre comillas.
repito, todo esto desde lineas de comando... si lo lanzas desde un lenguaje donde pasas cada parametro por un argv, no hacen falta las comillas, es mas, no deberias ponerlas.
Pero la llamada al compilador y al intérprete se como si estuviese en línea de comandos.
si la lanzas con un system o shell, si, es lo mismo...
Hola!, alguien me podria ayudar a generar un ejecutable para linux? :)
Probé con el comando:
bgdc principal.prg -s principal.dcb
me genera un archivo que al intentar ejecutarlo metira lo sig en la linea de comandos
./principal: línea 1: $'dcb\r': no se encontró la orden
./principal: línea 2: $'\037\020\a': no se encontró la orden
./principal: línea 3: error sintáctico cerca del elemento inesperado `)'
jd�@�@�@�@�@�@�@�@{l�AZA�A�A�A�A�AZA�lDCD.D.D.D.DC�P�F�E�F�F�F�F�F�E�
�HH�H�H�H�H�HH�
pbY�XbYnYnYnYnY�X�<�Z�Y�Z'
tambien con intenté compilar con:
bgdc principal.prg -s bgdi
dando como resultado:
BGDC 1.0.0 (Nov 21 2012 18:57:53)
Bennu Game Development Compiler
Copyright (c) 2006-2012 SplinterGU (Fenix/BennuGD)
Copyright (c) 2002-2006 Fenix Team (Fenix)
Copyright (c) 1999-2002 Jos� Luis Cebri�n Pag�e (Fenix)
N/A:5: error: Can't open stub file bgdi ( token error: EOF ).
la verdad que no se que pasa
Saludos!
Hola, yo no tengo mucha idea de linux, pero vaya.. que el error EOF suele pasar cuando el formato del archivo no es standar, por ejemplo, si el .prg está editado en un editor desde windows lo normal no es que se guarde en formato UTF-8, pero casi seguro que es necesario que esté en ese formato en linux.
Te lo comento por que yo he tenido mucho lio con esta chorrada en mac, solo por que el programa estaba escrito desde el notepad de windows.
Si te sirve de algo esta info.. aunque no te aseguro que tenga que ver pero revisalo por si acaso.
Muchas gracias por tu respuesta! :)
me fijaré si es por la codificación del archivo, pero no lo creo por que ejecuto con el interprete y anda genial.
Cualquier cosa si lo llego a solucionar les aviso.
bgdc prg -s bgdi
bgdi es el path completo (o simplemente bgdi si esta en la misma carpeta) del bgdi de la plataforma que se quiere generar el ejecutable
Gracias! :)
ahi funca!, copié el bgdi y el bgdc a la carpeta del prg y ahora genera el ejecutable :D
Quote from: izubiaurre on October 16, 2007, 05:51:09 PM
...
Specify compiler options ( -C options):
a Enable automatic declare functions:
Permite la declaración de funciones automáticamente. Muy útil cuando no queramos declarar las funciones, pero tiene sus contraindicaciones, posibles bugs y descenso de efectividad en tiempo de ejecución. Utiliza como parámetro una "c" en mayúscula y los parámetros siguientes pueden ir juntos o aparte.
Modo de uso:
> bgdc.exe mi_programa.prg -C a
> bgdc.exe mi_programa.prg -Ca
Ahora mismo es necesario compilar como bgdc.exe -C a si no tienes definidos las funciones...
Y la definición de las funciones serían de esta manera:
Declare menu(); end
Declare nave_enemigo(x,y); end
Declare prota(x,y, vida, nivel); end
Un Declare por cada. Si no, se puede ordenar las funciones (cuando digo funciones digo también procesos) según el uso; tener escrito en nuestro código antes de su llamada.
Esto es lo del compiler_options??? como en el viejo Div2?
Veo que existe una opcion
bgdc.exe mi_programa.prg
-Ca a Enable automatic declare functions:parece muy util.
Existen mas?? o solo ese
a Enable automatic declare functions:Me gustaria documentarme sobre modos de compilacion avanzadas.
Por cierto bien documentado esta?
en la Wiki lo explican?
Creo que la opcion -Ca va activada de serie. Al principio, en BennuGD, era necesario hacer una declaración de procesos y funciones al principio del código (parecido a C y sus .h), pero para facilitar el trabajo se revirtió a la forma de DIV/Fénix: declaración automática.
Quote from: panreyes on November 04, 2016, 06:09:42 PM
Creo que la opcion -Ca va activada de serie. Al principio, en BennuGD, era necesario hacer una declaración de procesos y funciones al principio del código (parecido a C y sus .h), pero para facilitar el trabajo se revirtió a la forma de DIV/Fénix: declaración automática.
Vaya eso no lo sabia?!!!
Entonces mejor así jejejje
Estoy acostumbrada no declarar las funciones en el cabezero del programa...sinceramente. Jejje