Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1287 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [RESOLU] gtk compilation dans un makefile

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] gtk compilation dans un makefile

n°1979754
Yionel
Profil : lactique
Posté le 01-04-2010 à 08:41:12  profilanswer
 

Bonjour !  :jap:  
 
Voila j'ai une compilation qui réussi mais je ne sais pas pourquoi.
Mon projet n'a que le main.c
 
Je suis  obligé de faire ceci :

Code :
  1. gcc `pkg-config --cflags --libs gtk+-2.0` -o tmp main.c


 
Alors qu'avec mon Makefile, cela ne passe pas :

Code :
  1. DEBUG=y
  2. CC=gcc
  3. ifeq ($(DEBUG),y)
  4.     CFLAGS=-W -Wall -ansi -pedantic -g
  5. else
  6.     CFLAGS=-W -Wall -ansi -pedantic
  7. endif
  8. LDFLAGS='pkg-config --cflags --libs gtk+-2.0'-DGTK_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DG_DISABLE_DEPRECATED
  9. EXEC=newGTK
  10. SRC= $(wildcard *.c)
  11. OBJ= $(SRC:.c=.o)
  12. all: echo $(EXEC)
  13. echo :
  14. ifeq ($(DEBUG),y)
  15. @echo "Mode debug activé"
  16. endif
  17. newGTK: $(OBJ)
  18. $(CC) -o $@ $^ $(LDFLAGS)
  19. %.o: %.c
  20. $(CC) -o $@ -c $< $(CFLAGS)
  21. .PHONY: clean cleanall
  22. clean:
  23. rm -rf *.o
  24. cleanall: clean
  25. rm -rf $(EXEC)


 
Voici l'erreur :

Code :
  1. yo@yo-laptop:~/Documents/projets/C/newGTK$ make
  2. Mode debug activé
  3. gcc -o main.o -c main.c -W -Wall -ansi -pedantic -g
  4. main.c:2:21: error: gtk/gtk.h: No such file or directory
  5. main.c:4: error: expected ‘)’ before ‘*’ token
  6. main.c: In function ‘main’:
  7. main.c:14: error: ‘GtkWidget’ undeclared (first use in this function)
  8. main.c:14: error: (Each undeclared identifier is reported only once
  9. main.c:14: error: for each function it appears in.)
  10. main.c:14: error: ‘button’ undeclared (first use in this function)
  11. main.c:15: error: ‘win’ undeclared (first use in this function)
  12. main.c:16: error: ‘vbox’ undeclared (first use in this function)
  13. main.c:19: warning: implicit declaration of function ‘g_log_set_handler’
  14. main.c:19: error: ‘G_LOG_LEVEL_WARNING’ undeclared (first use in this function)
  15. main.c:19: error: ‘GLogFunc’ undeclared (first use in this function)
  16. main.c:19: error: expected ‘)’ before ‘gtk_false’
  17. main.c:20: warning: implicit declaration of function ‘gtk_init’
  18. main.c:21: error: ‘g_log_default_handler’ undeclared (first use in this function)
  19. main.c:24: warning: implicit declaration of function ‘gtk_window_new’
  20. main.c:24: error: ‘GTK_WINDOW_TOPLEVEL’ undeclared (first use in this function)
  21. main.c:25: warning: implicit declaration of function ‘gtk_container_set_border_width’
  22. main.c:25: warning: implicit declaration of function ‘GTK_CONTAINER’
  23. main.c:26: warning: implicit declaration of function ‘gtk_window_set_title’
  24. main.c:26: warning: implicit declaration of function ‘GTK_WINDOW’
  25. main.c:27: warning: implicit declaration of function ‘gtk_window_set_position’
  26. main.c:27: error: ‘GTK_WIN_POS_CENTER’ undeclared (first use in this function)
  27. main.c:28: warning: implicit declaration of function ‘gtk_widget_realize’
  28. main.c:29: warning: implicit declaration of function ‘g_signal_connect’
  29. main.c:29: error: ‘gtk_main_quit’ undeclared (first use in this function)
  30. main.c:32: warning: implicit declaration of function ‘gtk_vbox_new’
  31. main.c:32: error: ‘TRUE’ undeclared (first use in this function)
  32. main.c:33: warning: implicit declaration of function ‘gtk_container_add’
  33. main.c:35: warning: implicit declaration of function ‘gtk_button_new_from_stock’
  34. main.c:35: error: ‘GTK_STOCK_DIALOG_INFO’ undeclared (first use in this function)
  35. main.c:36: warning: implicit declaration of function ‘G_OBJECT’
  36. main.c:36: warning: implicit declaration of function ‘G_CALLBACK’
  37. main.c:36: error: ‘helloWorld’ undeclared (first use in this function)
  38. main.c:36: error: ‘gpointer’ undeclared (first use in this function)
  39. main.c:36: error: expected ‘)’ before ‘win’
  40. main.c:37: warning: implicit declaration of function ‘gtk_box_pack_start’
  41. main.c:37: warning: implicit declaration of function ‘GTK_BOX’
  42. main.c:39: error: ‘GTK_STOCK_CLOSE’ undeclared (first use in this function)
  43. main.c:44: warning: implicit declaration of function ‘gtk_widget_show_all’
  44. main.c:45: warning: implicit declaration of function ‘gtk_main’


 
Pourquoi dans la ligne de commande gcc, je compile directement sans passer par un .o ? et pourquoi donc dans ce cas mon Makefile ne marche pas ? (qui lui passe par une étape supplémentaire)

Message cité 1 fois
Message édité par Yionel le 01-04-2010 à 10:38:38
mood
Publicité
Posté le 01-04-2010 à 08:41:12  profilanswer
 

n°1979795
GrosBocdel
Posté le 01-04-2010 à 10:01:45  profilanswer
 

Yionel a écrit :

Bonjour !  :jap:  
 
Voila j'ai une compilation qui réussi mais je ne sais pas pourquoi.
Mon projet n'a que le main.c
 
Je suis  obligé de faire ceci :

Code :
  1. gcc `pkg-config --cflags --libs gtk+-2.0` -o tmp main.c


 
Alors qu'avec mon Makefile, cela ne passe pas :
 
 
Pourquoi dans la ligne de commande gcc, je compile directement sans passer par un .o ? et pourquoi donc dans ce cas mon Makefile ne marche pas ? (qui lui passe par une étape supplémentaire)


 
Ton makefile est supposé compiler tous les fichiers de code en .o, puis les linker, ce que ne fait pas ta compilation directe.
Je n'ai pas mes makefile gtk sous la main, mais dans ton makefile, si tu remplaces ' par ` ça ne marche pas mieux?
 
 

n°1979805
Yionel
Profil : lactique
Posté le 01-04-2010 à 10:10:40  profilanswer
 

Euh la compilation direct ne fait pas le link ? c'est parce qu'il n'y a qu'un seul fichier ou bien ?
 
j'ai remplacé les ' par ` mais cela fait pareil :(

n°1979821
GrosBocdel
Posté le 01-04-2010 à 10:25:43  profilanswer
 

Yionel a écrit :

Euh la compilation direct ne fait pas le link ? c'est parce qu'il n'y a qu'un seul fichier ou bien ?
 
j'ai remplacé les ' par ` mais cela fait pareil :(


 
Il me semble bien. S'il y a un seul fichier, tu voudrais l'associer avec quel autre fichier?
Je comparerai ce soir avec mes makefile, je me souviens plus.
Sinon, peux tu essayer de changer:
$(CC) -o $@ -c $< $(CFLAGS)
en :
$(CC) -o $@ -c $< $(LDFLAGS)  
 
??
parce que pkg-config donne au compilo les chemins vers les includes

n°1979851
Yionel
Profil : lactique
Posté le 01-04-2010 à 10:38:24  profilanswer
 

Bingo, quand j'ai les $(LDFLAGS)  dans la compilation et l'édition de lien, ça marche !
 
Merci beaucouop, je bloquais dessus ça commençais à m'énerver :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [RESOLU] gtk compilation dans un makefile

 

Sujets relatifs
Ajax eval() js ie ok / ff ok [Résolu][RESOLU] Problème de Makefile...
html : créer un lien de téléchargement d'un fichier pdf [résolu][KSH] Find : iname + expression régulière ? - RESOLU -
[Résolu] jquery , 2 div draggable l'un dans l'autreinclude ajax php [Résolu]
[resolu]lire un attribut prive (poo)[Résolu] Perte de feuille de style sur changement de page
(Résolu) Elements invisibles dans le html suite à un include 
Plus de sujets relatifs à : [RESOLU] gtk compilation dans un makefile


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR