Bonjour à tous les gtk_istes
je débute moi aussi en Gtk+3 sous ubuntu 14
j'aurai besoin d'un éclairage pour la compilation séparée cf ci-dessous.
j'ai bien installé geany, gtk dev
j'arrive à compiler un programme mono bloc où tout est dans un seul fichier.
Mais pour des programmes plus complexes il va me falloir découper selon les règles de l'art en vigueur
http://emmanuel-delahaye.developpez....e-c/#organiser
j'ai repris un exemple qui me semble fonctionnel du moins à priori
voici la découpe toute classique en 3 fichiers pour un cas simple
le main ci dessous
viens le fichier header du callback
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #include <stdlib.h> #include <gtk/gtk.h> #include "callback.h" //main.c int main (int argc, char **argv) { GtkWidget *p_window = NULL; GtkWidget *p_main_box = NULL; /* Initialisation de GTK+ */ gtk_init (&argc, &argv); /* Creation de la fenetre principale de notre application */ p_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT (p_window), "destroy", G_CALLBACK (cb_quit), NULL); /* Creation du conteneur principal */ p_main_box = gtk_box_new (FALSE, 0); gtk_container_add (GTK_CONTAINER (p_window), p_main_box); /* Creation du bouton "Quitter" */ { GtkWidget *p_button = NULL; p_button = gtk_button_new_with_label("application-exit"); g_signal_connect (G_OBJECT (p_button), "clicked", G_CALLBACK (cb_quit), NULL); gtk_box_pack_start (GTK_BOX (p_main_box), p_button, FALSE, FALSE, 0); } /* Affichage de la fenetre principale */ gtk_widget_show_all (p_window); /* Lancement de la boucle principale */ gtk_main (); return EXIT_SUCCESS; }
puis le code du callback
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #ifndef H_CALLBACK #define H_CALLBACK #include <gtk/gtk.h> void cb_quit (GtkWidget *, gpointer); #endif /* not H_CALLBACK */
ligne de commande pour la compilation d'un seul fichier tout compris dans un j'utilise
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include "callback.h" void cb_quit (GtkWidget *p_widget, gpointer user_data) { gtk_main_quit(); /* Parametres inutilises */ (void)p_widget; (void)user_data; }
et sa fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part gcc -Werror -Wall main.c -o main `pkg-config --cflags --libs gtk+-3.0`
Quelqu'un peut-il m'expliquer comment compiler les 3 fichiers du dessus SVP sa fait 3 soirées que je cherche sans trouver
mes hypothèses
j'ai les 3 fichiers sous un même répertoire les include "machin.h" sont bien ok ( #include "cb_boite.h")
méthode 1 compilation à la main
il suffit de faire
puis
Code : Sélectionner tout - Visualiser dans une fenêtre à part gcc -std=c11 -Wall -fmax-errors=10 -Wextra callback.c -c -o libcallback.so `pkg-config --cflags --libs gtk+-3.0`
méthode 2 avec un makefile
Code : Sélectionner tout - Visualiser dans une fenêtre à part gcc -std=c11 -Wall -fmax-errors=10 -Wextra main.c libcallback.so -o main `pkg-config --cflags --libs gtk+-3.0`
cette méthode fonctionne, l'ordre dans lequel chaque bloc est écrit n'a pas d'importance car make s'en débrouille mais à l'intérieur de chaque ligne gcc l'ordre est fondamental
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 main : main.c libcallback.so gcc -std=c11 -Wall -fmax-errors=10 -Wextra main.c libcallback.so -o main `pkg-config --cflags --libs gtk+-3.0` libcallback.so : callback.c callback.h gcc -std=c11 -Wall -fmax-errors=10 -Wextra callback.c -c -o libcallback.so `pkg-config --cflags --libs gtk+-3.0`
méthode 2 avec geany
En écrivant je post j'ai trouvé mon erreur pour les méthodes 1 et 2 mais je suis toujours demandeur pour automatiser sous geany
Merci d'avance pour votre aide
Partager