Installer GTK+3 sous codeBlocks linuxMintDebian C++

Résolu/Fermé
nocrazy Messages postés 5 Date d'inscription samedi 31 octobre 2015 Statut Membre Dernière intervention 15 novembre 2015 - 15 nov. 2015 à 11:50
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 19 nov. 2015 à 09:23
Bonjour,
Je souhaite utilisé gtk+ 3 avec Code::Blocks 13.12 sous linux Mint Debian en C++.

En compilant j'obtiens le message d'erreur suivant:
gtk/gtk.h: Aucun fichier ou dossier de ce type.

J'ai déjà installé les paquets suivant :
libgtk-3-0
libgtk-3-bin
libgtk-3-common
libgtk-3-dev


Dans Code::Blocks>Settings>Compiler>Global Compiler Settings>Compiler Settings>Other Options j'ai saisi : `pkg-config --cflags gtk+-3.0`

Dans Code::Blocks>Settings>Compiler>Global Compiler Settings>Linker Settings>Other Linker Options j'ai saisi : `pkg-config --libs gtk+-3.0`

Quelqu'un serait il m'expliquer ce qu'il me manque à faire dans les paramétrages ?
Quelque chose avec le PATH sûrement mais je ne sais pas comment faire.

Merci







A voir également:

2 réponses

mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 811
Modifié par mamiemando le 17/11/2015 à 10:34
Bonjour

1) Commence par utiiliser
apt-file
pour déterminer quel est le bon paquet :

sudo apt-get update
sudo apt-get install apt-file
apt-file update
apt-file search gtk-3 | grep "gtk/gtk.h"


Exemple :

(mando@velvet) (~) $ apt-file search gtk-3 | grep "gtk/gtk.h"
libgtk-3-dev: /usr/include/gtk-3.0/gtk/gtk.h
libgtk-3-dev: /usr/include/gtk-3.0/gtk/gtkcheckbutton.h
libgtk-3-dev: /usr/include/gtk-3.0/gtk/gtkcheckmenuitem.h
libgtk-3-dev: /usr/include/gtk-3.0/gtk/gtkshow.h


On voit ici que c'est le paquet
libgtk-3-dev


2) Installe le paquet correspondant :

apt-get install libgtk-3-dev


3) Passe au compilateur les options nécessaire pour trouver le headers. Par défaut il va chercher des headers dans
/usr/include
. Sans options il faudrait donc ici que tu inclues
#include <gtk-3.0/gtk/gtk.h>
.

Ce n'est évidemment pas super car ton code devient dépendant de la version de gtk-3, ce qui n'est évidemment pas souhaitable. Il faut donc bien faire l'inclusion comme tu l'as faite (
#include <gtk/gtk.h>
), mais tu dois du coup préciser au compilateur qu'il doit, en plus de
/usr/include
, chercher des headers dans
/usr/include/gtk-3.0
. Le numéro de version n'apparaîtra donc que dans ton makefile et sera facilement modifiable. Ceci se réalise avec l'option -I :

g++ -W -I/usr/include/gtk-3.0 fichier.cpp


Bonne chance
0
Bonjour Mamiemando,
merci pour ta réponse, tu m'avais déjà aidé pour une question précédente.

J'ai utilisé une méthode différente, trouver sur un site Anglophone,
dans le terminal, je tape:
LD_LIBRARY_PATH="/opt/gtk/lib"
PATH="/opt/gtk/bin:$/usr/include/gtk-3.0/gtk"
export LD_LIBRARY_PATH PATH


je n'ai pas de modifications supplémentaires à faire dans le code::blocks et je garde mon #include <gtk/gtk.h>
Je ne suis pas sur de ce que j'ai fait mais ça fonctionne.
0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 811
Modifié par mamiemando le 18/11/2015 à 10:35
Étrange cette solution, ça voudrait dire que la variable PATH est utilisée pour trouver des headers. En théorie elle ne sert qu'à trouver des exécutables. Vu qu'à mon avis tu n'as rien dans /opt/gtk (à vérifier) je pense que certaines parties de cette solution sont inutiles.

Mais bon l'essentiel, c'est que ça marche comme tu veux :-)
0
nocrazy > mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024
18 nov. 2015 à 17:22
Oui mais apparemment, LD_LIBRARY_PATH et PATH sont 2 choses distinctes.
"LD_LIBRARY_PATH définit où chercher les librairies dynamiques (en plus des chemins par défaut)".
Sinon effectivement je n'ai rien dans /opt/gtk ou peut être en fichier caché.
0
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 7 811
Modifié par mamiemando le 19/11/2015 à 09:24
Oui on est d'accord, c'est pourquoi ça me surprend que la solution que tu as proposé ait pu régler ton problème.

Ton problème initial était un problème d'include (donc pour trouver les .h et .hpp), or les variables d'environnement que tu as mentionnées servent à lister des répertoires où chercher des exécutables (rôle de PATH) et des librairies .so (rôle de LD_LIBRARY_PATH).
0