PDA

Ver la Versión Completa : Configuración de proyectos Delphi


Ñuño Martínez
31-01-2020, 22:27:49
Como sabéis, estoy trabajando en Allegro.pas, cuyo objetivo es permitir usar Allegro tanto con Free Pascal como con Delphi. El tema es que este último no lo he usado mucho últimamente, así que tengo algunas dudas.

Creé archivos de proyecto (.dproj) para que compilar los ejemplos fuera rápido. Lo hize con la versión gratuita anterior a la Community Edition, pero hace unos meses actualicé a esta última (10.3 Version 26.0.36039.7899) y me he dado cuenta de que los archivos de proyecto son de otra versión (la 18.8, cuando antes era la 18.3) y añade algunos elementos.

Evidentemente quiero que estos archivos de proyecto puedan ser utilizados por la mayor parte de versiones y ediciones de Delphi que sea posible, así que mi pregunta es cómo afecta la versión, si otros Delphi serán capaces de leer el proyecto, o cómo puedo construir (aunque sea a mano, puesto que es un XML) archivos de proyecto que puedan ser usados por cualquier Delphi desde Delphi 8 (los anteriores no funcionan por incompatibilidad de dialectos).

Otra pregunta es acerca la configuración en sí. ¿Desde cuándo es tan caótica? Me cuesta horrores encontrar las opciones. ¿Hay algún sitio que describa con sencillez cómo activar y desactivar la depuración y las optimizaciones? Porque no lo veo por ningún lado.

Y para terminar, ¿cómo funciona con Delphi el Windows Manifest? Tampoco encuentra nada al respecto.

Otro día os pregunto sobre el compilador en línea de comandos y la utilidad "make".

Al González
02-02-2020, 20:53:28
Hola Ñuño, un gusto. :-)

cómo afecta la versión, si otros Delphi serán capaces de leer el proyecto, o cómo puedo construir (aunque sea a mano, puesto que es un XML) archivos de proyecto que puedan ser usados por cualquier Delphi desde Delphi 8
Lo normal es crear a mano un archivo de proyecto por cada versión contemplada del compilador. Si bien Embarcadero, al igual que Borland, ha cuidado (y se agradece) la compatibilidad hacia atrás del código .pas y otros formatos de archivo, no es el mismo caso con archivos de configuración o que agrupan unidades u otros proyectos. Al no estar esto garantizado, los fabricantes suelen entregar el código fuente de bibliotecas con un paquete por cada versión, aunque las unidades .pas contenidas sean las mismas en cada paquete.

cómo activar y desactivar la depuración y las optimizaciones?
Project|Options...|Delphi Compiler|Compiling

Neftali [Germán.Estévez]
03-02-2020, 10:02:11
Otra pregunta es acerca la configuración en sí. ¿Desde cuándo es tan caótica? Me cuesta horrores encontrar las opciones. ¿Hay algún sitio que describa con sencillez cómo activar y desactivar la depuración y las optimizaciones? Porque no lo veo por ningún lado.


Sólo un comentario acerca de la búsqueda de opciones en las últimas verisones de Delphi.
Mucha gente no sabe que en la ventana de búsqueda del IDE (Search) que usamos para buscar componentes, podemos también buscar opciones de configuración.
Por ejemplo, si escribimos "Optimiz" (para buscar optimization) nos da el acceso directo a esa opción de configuración.



https://i.imgur.com/VrPWei3.gif

Ñuño Martínez
03-02-2020, 11:43:38
Toma ya con el buscador. Ni se me había pasado por la cebeza. :eek: Gracias Germán.


Lo normal es crear a mano un archivo de proyecto por cada versión contemplada del compilador. Si bien Embarcadero, al igual que Borland, ha cuidado (y se agradece) la compatibilidad hacia atrás del código .pas y otros formatos de archivo, no es el mismo caso con archivos de configuración o que agrupan unidades u otros proyectos. Al no estar esto garantizado, los fabricantes suelen entregar el código fuente de bibliotecas con un paquete por cada versión, aunque las unidades .pas contenidas sean las mismas en cada paquete.
Pues vaya. Pero yo veo varios problemas. Primero, que va a haber chorrocientos (bueno, alguno menos) proyectos para cada ejemplo. Y segundo, que a ver dónde encuentro la descripción del formato para cada versión. :(

Lo que sí he comprobado es que Community Edition parece ser capaz de entender los proyectos de la versión anterior. Quizá si logro descifrar el formato que usa Delphi 6 (que puedo instalar en Linux para que no se mezcle con el Community :D) puede que de el pego y lo cargue bien... ;) Aunque no va a funcionar con Delphi 6 (ni Delphi 7, me temo) debido a problemas de compatibilidad del dialecto con el de Free Pascal.

movorack
03-02-2020, 18:41:33
Y si solo dejas los .dpr? Cuando los abres en una nueva versión el crea de inmediato el .dproj con lo básico para que pueda compilar

Al González
03-02-2020, 18:42:38
Buena aportación, Germán. :-)

proyectos para cada ejemplo
Quizá debí matizar. Los archivos de código fuente principal .dpr y .dpk son generalmente compatibles. La bronca viene con los nuevos archivos que los acompañan (como el XML .dproj). Pero creo que podrá funcionarte si sólo incluyes el .dpr (quizá también el .res) y dejas que el IDE cree los archivos adicionales que necesite.

Ñuño Martínez
05-02-2020, 13:47:25
tl;nr (https://en.wiktionary.org/wiki/TL;NR): Esto es más complicado de lo que parece.

Para empezar no hay archivo ".dpr" porque el ejemplo debe funcionar tanto en Delphi como con Free Pascal (la gracia de la biblioteca es que funcione en ambos sin hacer nada especial) así que todos los programas tienen extensión ".pas". Además las fuentes de los ejemplos están en un directorio separado de las unidades de la biblioteca para que se puedan instalar fácilmente estas últimas, y los ejecutables se guardan en otro directorio para no mezclar. Imaginad, si no, fuentes, bibliotecas, ejecutables y datos todos mezclados en el mismo directorio. Yo no tengo que hacerlo porque lo he visto, incluso en proyectos supuestamente profesionales, y ya os digo que no es nada cómodo.

O sea, el árbol de directorios (resumido, aquí el completo (https://sourceforge.net/p/allegro-pas/code/HEAD/tree/TRUNK/)) es el siguiente:

allegro.pas
+-bin
| +-demo
| \-examples
\-src
+-demo
+-examples
\-lib

Si a esto unimos que quiero que la primera vez que se compile lo haga optimizado para combatir el sanbenito de que Pascal genera ejecutables grandes y lentos, el archivo ".dproj" es indispensable. Si no incluyo los proyectos, cargará el archivo ".pas" en Delphi, compilará, le dará error porque no encuentra la unidad talycual y ¡vaya m¡€#@ de proyecto que no compila ni los ejemplos!

Con Lazarus hay poco problema porque, al ser libre y gratuito, si no carga pues te actualizas y a correr; incluso puedes tener varias versiones instaladas a la vez sin pegarse. Pero con Delphi, ¡ay, amigo!, actualizar no es tan fácil ni barato, y si te bajas una versión de prueba teniendo otra ya instalada preguntad al compañero Dec lo que puede pasar (http://www.clubdelphi.com/foros/showthread.php?t=94350)...

Se me ocurre como solución no incluir los archivos de proyecto y añadir Delphi como compilador de make (mi viejo Delphi 6 lo incluye, no he comprobado si las versiones más modernas también), aunque sé de buena tinta que los delphineros no estáis muy acostumbrados y la consola de comandos os da un poco de urticaria (que lo entiendo, oye). Quizá si explico en la documentación (https://sourceforge.net/p/allegro-pas/code/HEAD/tree/TRUNK/docs/build/delphi.txt)paso a paso cómo crear el proyecto no espante a mucha gente.

Ya véis mi problema. A ver cómo lo puedo solucionar. :(