estaba queriendo hacer algunas pruebas con pascal y fltk, para tomarme un poquito mas enserio este tema de programar. pero no se como hacer que el compilador de pascal encuentre cfltk, chatgpt me recomendo utilizar cfltk para tratar directamente con c y no con c++ he compilado segun lo que vi en la pagina de github del proyecto, pero, ahora no se muy bien que hacer la verdad, ¿alguien me podria dar una mano con esto?
Si estás escribiendo C o Pascal, usa el GNU Compiler Collection https://gcc.gnu.org/
Puedes instalarlo con sudo apt install gcc
Yo te recomendaría cambiar tu toolkit por uno con mejor soporte para Pascal.
A resumidas cuentas para usar tu libreria vas a tener bindings a tus bindings en C… xD
Básicamente: bindings.pas → cfltk → fltk
Si estas dispuesto a hacer tus bindings hay algo de documentación aquí y aquí por parte de fpc que explica como hacerlo. Hasta donde pude encontrar nadie lo ha hecho, asi que te toca a ti.
Yo te recomendaría usar lcl, la librería que proporciona el IDE Lazarus para crear GUIs. Es una abstracción para multiples plataformas, en Linux delega todo a GTK o Qt. En el caso de GTK soporta la version 2, la version 3 esta en alpha, y Qt desde la version 4 hasta la 6. Durante la compilación puedes escoger cual quieres usar.
Freepascal también es libre sino estoy mal. Me intereso mas porque puede hacer porteos a la wii y nintendo ds. De todas formas, ¿gcc pascal reúne también object pascal? ¿O solo pascal a secas? No me queda claro
Vale, me toca investigar un poco más. Aunque me escama un poco el hecho de que lcl sea una librería de lazarus. ¿Se puede usar independientemente no? Es igual, ya lo veré luego. Ahorita no veo la documentación porque estoy en celular
Prueba compilarlo tu mismo con GCC, haz tu propia investigación.
Por poder puedes. Igual necesitas tener Lazarus instalado pq es quien trae las unidades necesarias para funcionar. Fuera de eso, ya sabes, al compilador le tienes que decir donde encuentra las unidades, esto con el flag -Fu. La ruta puede cambiar dependiendo de tu distro.
Si quieres usar lcl sin usar Lazarus te recomendaría usar algo como make para todo eso de las rutas de tus dependencias.
Pues veré. Porque ni idea la verdad.
Te pongo un ejemplo:
Imagina una estructura como la siguiente:
ejemplito/
├── Makefile # Script de construcción
├── ejemplito.pas # Código fuente principal
└── build/ # Carpeta de salida (generada por make)
Lo siguiente es un codigo en Pascal.
program ejemplito;
uses
Interfaces,
Forms,
StdCtrls;
var
Form: TForm;
Label1: TLabel;
begin
Application.Initialize;
Application.CreateForm(TForm, Form);
Label1 := TLabel.Create(Form);
Label1.Parent := Form;
Label1.Caption := 'Una etiqueta';
Label1.Left := 50;
Label1.Top := 50;
Application.Run;
end.
Muy simple todo, es una ventana con un label. Nada con que romperse la cabeza.
Ahora toca lo “complicado”, decirle al compilador donde estan las unidades necesarias para el programa.
Yo uso Arch, pero me parece que en otras distribuciones las librerias se encuentran en un directorio diferente, te toca ver cual es en tu caso, pero siguiendo con el makefile.
FPC=fpc
LAZARUSDIR=/usr/lib/lazarus
ARCH=x86_64-linux
WIDGET=qt6
TARGET=ejemplito
BUILD_DIR=build
all:
mkdir -p $(BUILD_DIR)
$(FPC) -Fu$(LAZARUSDIR)/lcl/units/$(ARCH)/$(WIDGET) \
-Fu$(LAZARUSDIR)/lcl/units/$(ARCH) \
-Fu$(LAZARUSDIR)/components/lazutils/lib/$(ARCH) \
-o$(BUILD_DIR)/$(TARGET) $(TARGET).pas
Creo que es bastante auto descriptivo. Basicamente configuras el directorio con las unidades necesarias de Lazarus. Como fpc soporta varias arquitecturas tambien hay que escoger la que corresponda. Por ultimo, que widgets vas a usar. En este caso lo dejo con qt pq me gusta mucho.
Y con algo de suerte deberia compilar y dar algo como esto:
Esto lo menciono por si acaso. Necesitas tener instalados los paquetes del backend grafico que quieras usar. Esto son gtk2 gtk3 qt5 qt5pas qt6 qt6pas. Notese que para el caso de qt los paquetes vienen por pares, ya sabes, pq esta escrito en C++.
muchas gracias. la verdad es que he quedado muy satisfecho con esta explicación, definitivamente lo tengo que probar.
GNU Make es infalible https://www.gnu.org/software/make/ ^^
