[RESOLU] gtk compilation dans un makefile

gtk compilation dans un makefile [RESOLU] - C - Programmation

Marsh Posté le 01-04-2010 à 08:41:12    

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
Reply

Marsh Posté le 01-04-2010 à 08:41:12   

Reply

Marsh Posté le 01-04-2010 à 10:01:45    

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?
 
 

Reply

Marsh Posté le 01-04-2010 à 10:10:40    

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 :(

Reply

Marsh Posté le 01-04-2010 à 10:25:43    

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

Reply

Marsh Posté le 01-04-2010 à 10:38:24    

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 :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed