{{tag> programmation}}
====== Gtkmm ======
[[http://www.gtkmm.org/ | Gtkmm]] est un framework C++ permettant la création d'interface graphiques. Il s'agit d'une surcouche à GTK+ qui permet aux programmeurs c++ d'utiliser GTK+ par le biais de classes, et ainsi de profiter de tous les avantages du c++ (dérivation...).
=====Installation=====
Pour installer les librairies de développement de gtkmm, il faut installer le paquet [[apt>libgtkmm-3.0-dev]] (ou 2.4).
Si vous le désirez vous pouvez installer la documentation (en anglais) en installant [[apt>libgtkmm-3.0-doc]]. Pour la lire, vous pouvez utiliser le programme [[apt>devhelp]], ou simplement votre navigateur web préféré en vous rendant à l'adresse [[file:///usr/share/doc/libgtkmm-3.0-doc/docs/index.html]]
=====Compilation=====
==== Avec g++ ====
Pour compiler, vous devrez linker le projet en utilisant l'utilitaire pkg-config comme ci-dessous:
g++ fichier.cpp -o executable `pkg-config gtkmm-3.0 --cflags --libs`
==== Avec l'IDE codeblocks ====
Pour compiler sous [[:code_blocks|Codeblocks]], il vous suffit également de linker le projet, toujours en utilisant l'utilitaire pkg-config de la manière suivante :
* Créez un projet de type « console application » en C++ dans codeblocks.
* Allez dans Project → Build options → Compiler settings → Other options, et collez-y ceci :
`pkg-config --cflags gtkmm-3.0`
N.B. ; l'option pkg-config est entre "guillemets-accent-grave" ( = Alt-Gr + 7 )
* Allez dans Project → Build options → Linker settings → Other linker options, et collez-y ceci :
`pkg-config --libs gtkmm-3.0`
* Entrez un code de base pour gtkmm :
#include
#include
int main(int argc, char *argv[])
{
Gtk::Main kit(argc, argv);
return 0;
}
* Vous pouvez maintenant écrire et compiler votre projet. Vous pouvez également l'enregistrer comme template : File → save project as user template. Vous pourrez ainsi créer directement dans codeblocks un nouveau projet utilisant gtkmm : File → New → Project → User templates.
Bien sûr, cette démarche doit être adaptée à la version de gtkmm que vous utilisez. Les lignes ci-dessus ont été écrite pour le paquet **gtkmm-3.0**. Mais si vous avez installé le paquet **gtkmm-2.4**, elles doivent être naturellement adaptées de la façon suivante :
* Créez un projet de type « console application » en C++ dans codeblocks.
* Allez dans Project → Build options → Compiler settings → Other options, et collez-y ceci :
`pkg-config --cflags gtkmm-3.0`
* Allez dans Project → Build options → Linker settings → Other linker options, et collez-y ceci :
`pkg-config --libs gtkmm-3.0`
* Entrez un code de base pour gtkmm :
#include
int main(int argc, char *argv[])
{
Gtk::Main kit(argc, argv);
Gtk::Window window;
kit.run(window);
return 0;
}
Il peut être intéressant, surtout si l'on débute en C++, de compléter l'installation de **Codeblocks** en installant des **exemples de programmes**. On peut trouver de nombreux exemples sur le site [[http://git.gnome.org/browse/gtkmm-documentation/tree/examples/book]] ou encore dans les tutoriels proposés sur le site : [[http://developer.gnome.org/gtkmm-tutorial]].
Comme on peut le voir sur les forums, il arrive souvent que ds tentatives d'utilisation de ces exemples se soldent par des erreurs à la compilation ! Ceci est du fait que la version de gtkmm utilisée pour les mettre au point est différente de celle que vous venez d'installer sur votre ordinateur. Deux raisons peuvent induire en erreur :
- la première est que le numéro de version gtkmm n'est pas forcément le même que le numéro de version des paquets(cf. [[http://developer.gnome.org/gtkmm-tutorial/unstable/sec-install-unix-and-linux.html.fr#sec-linux-install-from-packages]] ). Si l'on constate des erreurs à la compilation, il peut être intéressant de tester la compilation pour des versions de numéro voisins.
- la deuxième raison est que le numéro de la version de gtkmm qui correspond à ces programmes n'est pas inscrite dans les commentaires du code de ces programmes. Une fois ces programmes récupérés, si vous n'avez pas fait attention au numéro de version au moment où vous les avez récupérés, vous n'avez plus de moyens pour le retrouver.
Voici quelques conseils pour vous aider à récupérer la bonne version du code de ces programmes exemples. Nous supposons que vous avez installé **gtkmm 3.0** à partir du paquet synaptic d'Ubuntu. Notre objectif est donc d'obtenir la version 3.0 des programmes exemples. Ces programmes sont stockés sur le site [[http://git.gnome.org/browse/gtkmm-documentation/tree/examples/book]]. Ce site est un repository git. Il nous faut donc installer git pour y avoir facilement accès.
Il existe de nombreux tutoriels d'introduction à git. En fait ils sont écrit pour des développeurs et sont trop compliqués pour l'utilisation que nous voulons en faire.
Pour l'installation :
$ sudo apt-get install git
devrait être suffisant.
Ensuite il faut se placer dans le répertoire où l'on veut stocker les exemples et cloner le repository git :
~/MonRepertoirePourLesExemples$ git clone http://git.gnome.org/browse/gtkmm-documentation
Par défaut cela nous donne la version de développement ( puisque c'est un outils pour les développeurs ). On peut se renseigner sur les versions disponibles avec la commande :
~/MonRepertoirePourLesExemples$ cd gtkmm-documentation/
~/MonRepertoirePourLesExemples/gtkmm-documentation$ git tag
Parmi les lignes de résultat on repère le numéro de version disponible qui nous intéresse, dans notre exemple **3.0.0**. On obtient la version correspondante avec la commande :
~/MonRepertoirePourLesExemples/gtkmm-documentation$ git checkout 3.0.0
Ceci devrait être suffisant pour installer en local la version voulue des programmes exemples.
Une fois les source des programmes exemples récupérés :
* On ouvre un nouveau projet en utilisant le nouveau type de projet que vous avez créé en suivant les indications ci-dessus. C'est-à-dire : File → New → Project → From templates... et vous choisissez le modèle que vous venez de créer pour **gtkmm-3.0**.
* Une fenêtre de dialogue vous demande alors de choisir le répertoire de travail. Et vous choisissez le répertoire dans lequel se trouve les sources du programme qui vous intéresse. Vous confirmez que vous n'avez pas peur d'écraser les fichiers. En fait, il n'y aura pas d'écrasement de fichier puisque vous n'écrivez alors qu'un fichier un fichier projet **Codeblock** (*.cbp), un fichier XML (*.layout) et un seul fichier source "main.cpp" qui contient tout simplement le code base entré pour créer votre "User Template". Ce fichier ne va pas écraser le fichier initial du programme exemple car celui-ci s'intitule "main.cc".
* Ensuite on peut ajouter à notre projet **Codeblock** les fichiers sources du programme exemple (*.h et *.cc). Pour ce faire, allez dans Project → Add files recursively... et sélectionnez tous les fichiers sources du programme exemple qui vous sont proposés.
* Maintenant nous avons deux "main" ! Nous allons garder celui fourni par l'exemple "main.cc" et nous allons supprimer le main par défaut "main.cpp" en allant dans Project → Remove file...
* Maintenant on peut compiler et on espère qu'il n'y a plus d'erreurs ...
==== Avec CMake ====
[[http://www.cmake.org|Cmake]] est un programme permettant de simplifier la compilation en générant des makefiles.
Pour utiliser gtkmm avec cmake, il faut procéder ainsi :
project(nom_du_projet)
cmake_minimum_required(VERSION 2.6)
find_package(PkgConfig)
pkg_check_modules(GTKMM gtkmm-3.0 )
link_directories(
${GTKMM_LIBRARY_DIRS} )
include_directories(
${GTKMM_INCLUDE_DIRS} )
set (SRC
main.cpp
#Vos sources
)
add_executable(executable
${SRC} )
target_link_libraries(executable
${GTKMM_LIBRARIES} )
CMake utilisera pkg-config pour trouver la librairie, ce code ne permet donc pas de compiler un programme gtkmm de façon portable.
=====Liens utiles=====
[[http://www.gtkmm.org/documentation.shtml|La documentation officielle (en anglais)]]
[[http://www.gtkmm.org/docs/gtkmm-3.0/docs/tutorial/pdf/programming-with-gtkmm.pdf|Le livre en ligne "Programming with gtkmm"]] ([[http://www.gtkmm.org/docs/gtkmm-3.0/docs/tutorial/html/index.html|aussi disponible en html]])
[[http://www.siteduzero.com/tutoriel-3-277422-creer-des-interfaces-graphiques-en-c-avec-gtkmm.html#part_277420|Tutoriel en français sur "Le Site du Zéro"]]
----
//Contributeurs : [[utilisateurs:geenux|Geenux]], [[utilisateurs:bsaleil|bsaleil]]//