Per compilare gli esempi di OpenGL derivanti dal sito Nehe in Windows si puo' prima installare Code::Blocks con MingW
Successivamente si installa la libreria OpenGL scaricando questo file (vedi sito originale)
A questo punto si copia manualmente.
1) il file glut32.dll in C:\Windows\System32
2) il file libglut32.a in C:\Programmi\CodeBlocks\MinGW\lib
3) il file glut.h in C:\Programmi\CodeBlocks\MinGW\include
Fatto cio' si puo' creare un nuovo progetto vuoto e con clic destro si selezionano le Build Options (vedi figura sottostante)
Nel tab Linker Settings si aggiungono opengl32, glu32 e glut32
Si puo' quindi procedere con la compilazione con il primo degli esempi OpenGl di Nehe
Visualizzazione post con etichetta Code::Blocks. Mostra tutti i post
Visualizzazione post con etichetta Code::Blocks. Mostra tutti i post
lunedì 16 settembre 2013
giovedì 24 gennaio 2013
Sviluppare in GTK su Linux e Windows
Per impostare un ambiente di sviluppo per GTK su Linux e Windows si devono seguire i seguenti passi:
Linux
Il metodo e' quantomai sbrigativo
apt-get install libgtk-3-dev
apt-get install anjuta
Windows
In questo caso la strada e' un po piu' lunga
Si devono prima scaricare i file
gtk+-bundle_2.24.10-20120208_win32
codeblocks-12.11mingw-setup_user
che corrispondono alle librerie (Gtk) ed all'editor (Codeblocks)
L'editor si installa come un normale programma mentre il file zip delle gtk deve essere decompresso (per esempio su C:\gtk)
In conclusione si deve aggiungere alla Path la directory c:\gtk\bin
A questo punto si lancia l'editor, si crea un nuovo progetto Gtk e quando si arriva alla schermata sottostante si imposta la directory dove e' stato scompattato il pacchetto delle librerie
Linux
Il metodo e' quantomai sbrigativo
apt-get install libgtk-3-dev
apt-get install anjuta
Windows
In questo caso la strada e' un po piu' lunga
Si devono prima scaricare i file
gtk+-bundle_2.24.10-20120208_win32
codeblocks-12.11mingw-setup_user
che corrispondono alle librerie (Gtk) ed all'editor (Codeblocks)
L'editor si installa come un normale programma mentre il file zip delle gtk deve essere decompresso (per esempio su C:\gtk)
In conclusione si deve aggiungere alla Path la directory c:\gtk\bin
A questo punto si lancia l'editor, si crea un nuovo progetto Gtk e quando si arriva alla schermata sottostante si imposta la directory dove e' stato scompattato il pacchetto delle librerie
Si precisa che nella versione per Windows non e' disponibile l'editor visuale delle form in quanto manca Glade
Vi e' inoltre da precisare che la versione di Gtk su Debian Testing e' la 3 mentre su Windows e' la versione 2
lunedì 24 settembre 2012
Autotools per creare installazioni
Per prima cosa e' stato aggiunto un file make cosi' definito
Makefile
-------------------------------------
all:
g++ -Wall -O3 -lgmp -o pi main.cpp
clean:
rm -f main *.o
-------------------------------------
per mantenere traccia della presenza del file config.h si deve inserirlo nell'header (se si intede usare autotools e' bene metterlo dall'inizio altrimenti si deve reiniziare tutta la procedura a partire da autoscan)
Makefile
-------------------------------------
all:
g++ -Wall -O3 -lgmp -o pi main.cpp
clean:
rm -f main *.o
-------------------------------------
dopo di cio' si lancia il comando autoscan che genera il file configure.scan
dato che non si devono fare modifiche a mano si puo' procedere rinominandolo
mv configure.scan configure.ac
a questo punto si puo' lanciare il comando autoconf che genera il file configure
si rinomina quindi
mv Makefile Makefile.in
lanciando il comando ./configure si avra' che il programma viene compilato ma viene anche segnalato che manca il file config.h.in (il file config.h serve a realizzare degli script di compilazione esportabili su piu' piattaforme)
su lancia quindi il comando autoheader che crea il file config.h.in (config.h e' generato da ./configure)
per mantenere traccia della presenza del file config.h si deve inserirlo nell'header (se si intede usare autotools e' bene metterlo dall'inizio altrimenti si deve reiniziare tutta la procedura a partire da autoscan)
----------------------------------
#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <gmp.h>
#include "config.h"
using namespace std;
int main()
{
mpf_t a;
----------------------------------
al termine si puo' compilare il tutto con ./configure
Qualche tempo fa KDevelop includeva la possibilita' di usare autotools mentre al momento in cui sto scrivendo usa solo CMake. CodeBlocks a causa del fatto di essere multipiattaforma non ha mai sviluppato l'utilizzo di autotools. Al momento l'unica IDE evoluta che faccia uso di autotools in modo automatico e' Anjuta
Qualche tempo fa KDevelop includeva la possibilita' di usare autotools mentre al momento in cui sto scrivendo usa solo CMake. CodeBlocks a causa del fatto di essere multipiattaforma non ha mai sviluppato l'utilizzo di autotools. Al momento l'unica IDE evoluta che faccia uso di autotools in modo automatico e' Anjuta
lunedì 3 settembre 2012
Compilare GTK in Code::Blocks in Debian
Come compilare GTK con Code::Blocks sotto Debian
(attenzione agli apici che sono inversi)
Compiler
-------------------------------------------------
`pkg-config –cflags gtk+-2.0 gmodule-export-2.0`
`pkg-config –cflags libglade-2.0`
--------------------------------------------------------------
`pkg-config –libs gtk+-2.0 gmodule-export-2.0`
`pkg-config –libs libglade-2.0`
altrimenti a linea di comando
gcc `pkg-config –cflags libglade-2.0 –libs gtk+-2.0` `pkg-config –libs gtk+-2.0 gmodule-export-2.0` main.c
lunedì 27 agosto 2012
Esempio GUI con GTK in C
Per creare la GUi viene impiegata la libreria GTK senza l'impiego di Glade (ovvero in GUI Designer di GTK)
Impiegando Code::Block e scegliendo il progetto GTK non e' necessario impostare le flag del compilatore che vengono aggiunte in automatico dall'IDE per cui e' molto semplice giungere ad un eseguibile
Compilare l'esempio seguente con Eclipse e' decisamente piu' complicato
Una delle principali differenze rispetto a Qt risiede nel fatto che GTK e' completamente in C (ha una interfaccia in C++ ma solo come wrapper) per cui la gestione degli oggetti non esiste in modo tradizionale. Inoltre per aggiungere una azione ad un widget si usa signal connect
--------------------------------------------------
#include <stdlib.h>
#include <gtk/gtk.h>
#include <stdio.h>
GtkWidget *scale = NULL;
GtkWidget *label = NULL;
GtkWidget *progressbar= NULL;
static void cambia_valore (GtkWidget *wid, GtkWidget *win)
{
gdouble current_value = gtk_range_get_value(GTK_RANGE(scale));
char buffer [14] = { '\0' };
sprintf ( buffer, "%.0f", current_value);
gtk_label_set_text(label,buffer);
gtk_progress_bar_set_fraction(progressbar,current_value/100);
}
int main (int argc, char *argv[])
{
GtkWidget *win = NULL;
GtkWidget *vbox = NULL;
/* Initialize GTK+ */
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
gtk_init (&argc, &argv);
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
/* Create the main window */
win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (win), 8);
gtk_window_set_title (GTK_WINDOW (win), "Progress Bar");
gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
gtk_widget_realize (win);
g_signal_connect (win, "destroy", gtk_main_quit, NULL);
/* Create a vertical box with buttons */
vbox = gtk_vbox_new (TRUE, 6);
gtk_container_add (GTK_CONTAINER (win), vbox);
scale = gtk_hscale_new_with_range(0,100,1);
g_signal_connect (G_OBJECT (scale), "value_changed", G_CALLBACK (cambia_valore), (gpointer) win);
gtk_box_pack_start (GTK_BOX (vbox), scale, TRUE, TRUE, 0);
label = gtk_label_new("0");
gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
progressbar = gtk_progress_bar_new();
gtk_box_pack_start (GTK_BOX (vbox), progressbar, TRUE, TRUE, 0);
/* Enter the main loop */
gtk_widget_show_all (win);
gtk_main ();
return 0;
}
--------------------------------------------------
nel caso di compilazione a mano si puo' invece da riga di comando indicare
gcc `pkg-config --cflags --libs gtk+-2.0` main.c -o programma
Impiegando Code::Block e scegliendo il progetto GTK non e' necessario impostare le flag del compilatore che vengono aggiunte in automatico dall'IDE per cui e' molto semplice giungere ad un eseguibile
Compilare l'esempio seguente con Eclipse e' decisamente piu' complicato
Una delle principali differenze rispetto a Qt risiede nel fatto che GTK e' completamente in C (ha una interfaccia in C++ ma solo come wrapper) per cui la gestione degli oggetti non esiste in modo tradizionale. Inoltre per aggiungere una azione ad un widget si usa signal connect
--------------------------------------------------
#include <stdlib.h>
#include <gtk/gtk.h>
#include <stdio.h>
GtkWidget *scale = NULL;
GtkWidget *label = NULL;
GtkWidget *progressbar= NULL;
static void cambia_valore (GtkWidget *wid, GtkWidget *win)
{
gdouble current_value = gtk_range_get_value(GTK_RANGE(scale));
char buffer [14] = { '\0' };
sprintf ( buffer, "%.0f", current_value);
gtk_label_set_text(label,buffer);
gtk_progress_bar_set_fraction(progressbar,current_value/100);
}
int main (int argc, char *argv[])
{
GtkWidget *win = NULL;
GtkWidget *vbox = NULL;
/* Initialize GTK+ */
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
gtk_init (&argc, &argv);
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);
/* Create the main window */
win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (win), 8);
gtk_window_set_title (GTK_WINDOW (win), "Progress Bar");
gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
gtk_widget_realize (win);
g_signal_connect (win, "destroy", gtk_main_quit, NULL);
/* Create a vertical box with buttons */
vbox = gtk_vbox_new (TRUE, 6);
gtk_container_add (GTK_CONTAINER (win), vbox);
scale = gtk_hscale_new_with_range(0,100,1);
g_signal_connect (G_OBJECT (scale), "value_changed", G_CALLBACK (cambia_valore), (gpointer) win);
gtk_box_pack_start (GTK_BOX (vbox), scale, TRUE, TRUE, 0);
label = gtk_label_new("0");
gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
progressbar = gtk_progress_bar_new();
gtk_box_pack_start (GTK_BOX (vbox), progressbar, TRUE, TRUE, 0);
/* Enter the main loop */
gtk_widget_show_all (win);
gtk_main ();
return 0;
}
--------------------------------------------------
nel caso di compilazione a mano si puo' invece da riga di comando indicare
gcc `pkg-config --cflags --libs gtk+-2.0` main.c -o programma
domenica 26 agosto 2012
Compilare SDL con Code::Blocks
Per compilare con Code::Blocks programmi con dipendenza in SDL sotto Debian 6.0 e' sufficiente installare mediante apt-get le librerie di sviluppo sotto riportate
libsdl-sound1.2-dev
libsdl1.2-dev
libsdl-image1.2-dev
libsdl-mixer1.2-dev
libsdl-net1.2-dev
libsdl-ttf2.0-dev
libsdl-ttf2.0-dev
Iscriviti a:
Post (Atom)
Debugger integrato ESP32S3
Aggiornamento In realta' il Jtag USB funziona anche sui moduli cinesi Il problema risiede nell'ID USB della porta Jtag. Nel modulo...
-
In questo post viene indicato come creare uno scatterplot dinamico basato da dati ripresi da un file csv (nel dettaglio il file csv e' c...
-
La scheda ESP32-2432S028R monta un Esp Dev Module con uno schermo TFT a driver ILI9341 di 320x240 pixels 16 bit colore.Il sito di riferiment...
-
Questo post e' a seguito di quanto gia' visto nella precedente prova Lo scopo e' sempre il solito: creare un sistema che permet...