# Manuel de l'environnement de développement intégré Anjuta

V 1.0.0

Manuel de l'environnement de développement intégré Anjuta

Naba
Kumar
Andy
Piper
Biswapesh
Chattopadhyayr
Johannes
Schmid
2001-2002
2006-2008
Naba Kumar, Andy Piper, Biswapesh Chattopadhyay
Johannes Schmid
2009-2010.
Bruno Brouard (annoa.b@gmail.com)
2010.
Gérard Baylard (gerard.b|@|bbox.fr)

Permission vous est donnée de copier, distribuer et/ou modifier ce document selon les termes de la Licence GNU Free Documentation License, Version 1.1 ou ultérieure publiée par la Free Software Foundation sans section inaltérable, sans texte de première page de couverture ni texte de dernière page de couverture. Vous trouverez un exemplaire de la Licence GNU Free Documentation License de la Free Software Foundation en visitant leur site Web ou en écrivant à : Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

La plupart des noms utilisés par les entreprises pour distinguer leurs produits et services sont des marques déposées. Lorsque ces noms apparaissent dans la documentation GNOME et que les membres du projet de documentation GNOME sont informés de l'existence de ces marques déposées, soit ces noms entiers, soit leur première lettre est en majuscule.

Manuel de Anjuta 2.1.0
2007

Johannes Schmidjhs@gnome.org

Équipe Anjuta

## Introduction

Anjuta est un environnement de développement intégré (IDE) polyvalent pour le bureau GNOME. Il intègre de nombreuses facilités de programmation avancée comprenant la gestion de projet, des assistants pour applications, un débogueur interactif, le concepteur d'interface utilisateur intégré Glade, l'API d'aide intégrée Devhelp, le profileur de mémoire intégré Valgrind, le profileur de performances intégré gprof, un générateur de classes, un éditeur de source puissant, un navigateur de source et plus encore.

Anjuta DevStudio a été conçu pour être simple d'emploi mais suffisamment puissant pour répondre à tous vos besoins en programmation. Beaucoup de fonctionnalités ont été ajoutées à Anjuta depuis le début de son développement. Notre but est de fournir puissance et fonctionnalités conjointement et de rendre votre développement de logiciels agréable sans faire trop de fioritures. Nous voulons continuer à améliorer et rendre stable Anjuta pour vous fournir la meilleure expérience d'environnement de développement intégré (IDE). Nous espérons que vous apprécierez l'usage d'Anjuta. Dans le cas contraire, aidez-nous à l'améliorer en rapportant les bogues et en faisant des suggestions.

La capture d'écran suivante illustre une partie des éléments que vous trouverez dans Anjuta.

### Anjuta en action

Anjuta en action

Anjuta possède un système de zones d'ancrage flexible et avancé qui vous permet de disposer toutes les vues comme vous le souhaitez. Vous pouvez faire glisser les vues en utilisant les barres de glissement et modifier leur disposition. Chaque projet conserve les placements ; vous pouvez donc avoir un arrangement personnalisé pour chaque projet. Toutes les vues ancrées peuvent être minimisées pour éviter l'encombrement dans la fenêtre principale. Les vues minimisées apparaissent sous forme d'icônes sur le côté gauche de la fenêtre principale. Vous pouvez activer toutes les actions des menus, soit en cliquant lorsque le curseur est au dessus d'un élément de menu (manière classique sous GNOME), soit via une interface utilisateur avec une configuration dédiée de raccourcis clavier.

Merci de signaler tous problèmes rencontrés avec Anjuta. Cela nous aidera à améliorer le logiciel tout en aidant la communauté des logiciels libres.

## Familiarisation avec Anjuta

### Menus et raccourcis clavier

En haut de la fenêtre principale de Anjuta se trouve la barre de menus. Elle vous permet d'accéder à presque toutes les fonctionnalités de Anjuta. Les actions sont regroupées par type. Par exemple, les actions concernant les fichiers sont regroupées dans le menu Fichier.

#### Barre des menus

Barre des menus d'Anjuta

#### Menu Fichier

Menu Fichier

Des raccourcis clavier sont disponibles pour la plupart des éléments de menu. Tous les raccourcis clavier sont affichés en face des éléments de menu correspondants. D'autres raccourcis clavier utiles sont décrits ci-après.

- Navigation parmi les onglets de l'éditeur : CtrlAltPage Haut (en avant) et CtrlAltPage Bas (en arrière). Vous pouvez également changer de page en faisant un clic-droit sur les onglets de l'éditeur et en choisissant un nom de fichier dans le menu contextuel (c'est pratique quand tous les onglets de l'éditeur ne sont pas entièrement visibles). Il se peut que ces raccourcis clavier soient déjà attribués par certaines configurations de bureau. Dans ce cas, vous devrez les reconfigurer (pas dans Anjuta car ils sont figés) si vous voulez les utiliser.

- Aide contextuelle : MajusculeF1. Positionnez le curseur sur un mot (par exemple, le nom d'une fonction) sur lequel vous voulez obtenir l'aide par l'API et utilisez ce raccourci. L'aide contextuelle ne fonctionne que si Devhelp est installé, sinon le menu d'aide contextuelle et le bouton de la barre d'outils sont inactifs. Vous pouvez obtenir Devhelp à partir du site Web de Devhelp. Vous devez également installer les livres relatifs à Devhelp.

- Auto-complétion : CtrlEntrée. Utilisez ce raccourci quand le curseur est situé à la fin d'un mot incomplet pour faire apparaître une liste des mots complétant la fin du mot. Faites défiler et choisissez le mot souhaité dans la liste si vous le trouvez.

- Plus de raccourcis : recherchez les raccourcis affichés à droite des étiquettes des éléments de menu. Les raccourcis peuvent également être modifiés comme expliqué dans l'astuce ci-dessous.

#### Personnalisation des raccourcis

Vous pouvez modifier les raccourcis par défaut en choisissant Édition Préférences et en sélectionnant l'onglet Raccourcis.

### Fenêtre principale

La fenêtre principale contient plusieurs fenêtres d'affichage qui peuvent être réarrangées en déplaçant leurs barres de titre. Elles peuvent également être minimisées en cliquant sur les boutons minimiser à gauche dans les barres de titre.

1. La fenêtre Documents ne contient qu'un document actif à la fois (s'il y a des fichiers ouverts). Toutes les commandes fichier s'appliquent à ce document actif. Vous pouvez basculer vers tout document en cliquant sur son onglet. Vous pouvez aussi faire un clic-droit sur les onglets et choisir le document dans le menu déroulant qui apparaît. Ceci est particulièrement pratique lorsqu'il y a beaucoup de fichiers ouverts et qu'ils ne sont pas tous visibles dans la zone des onglets.

2. La fenêtre Projet affiche l'arborescence des fichiers du projet si un projet est ouvert. Sinon, la fenêtre Projet est généralement cachée. En double-cliquant sur un élément de la fenêtre Projet vous ouvrez ce fichier.

3. La fenêtre Fichiers affiche l'arborescence des fichiers. Si aucun projet n'est ouvert, l'arborescence pointe habituellement vers la racine du système de fichiers mais vous pouvez modifier ce paramètre dans les préférences. Si un projet est ouvert, la fenêtre affiche tous les fichiers du projet. Un double-clic ouvre le fichier en utilisant l'application appropriée configurée dans les préférences MIME de GNOME. Un clic-droit ouvre un menu contextuel vous permettant de choisir la façon d'ouvrir le fichier.

4. La fenêtre Symboles affiche l'arborescence de tous les symboles disponibles dans le projet, générée par l'analyseur ctags. Un double-clic ouvre une fenêtre de l'éditeur contenant le fichier à la ligne correspondante.

   Un onglet Rechercher dans la fenêtre Symboles vous permet de rechercher un symbole donné.

5. La fenêtre Messages affiche tous les messages (les deux sorties `stdout` (standard) et `stderr` (erreurs)) quand une commande externe est exécutée. Généralement cachée, la fenêtre Messages apparaît dès qu'une commande externe est exécutée, comme lors de la compilation d'un fichier ou du projet, de sessions de débogage, de recherches et nombre d'autres opérations. Anjuta y ajoute également ses propres messages si nécessaire.

   Les couleurs utilisées pour afficher les messages ont leur importance. Les messages normaux sont affichés avec la couleur d'arrière-plan standard (généralement noir). Les messages d'avertissement sont affichés en orangé et ceux d'erreur en rouge. Les messages d'avertissement et d'erreur sont des liens : un double-clic sur un message de ce type déplace dans le fichier concerné au numéro de ligne indiqué.

   Par exemple, quand vous compilez un fichier qui contient des erreurs, des messages en rouge apparaissent pour vous indiquer la nature des problèmes et leur localisation. Un double-clic sur de tels messages ouvre le fichier et met en surbrillance la ligne contenant l'erreur.

6. La fenêtre Terminal est une émulation de terminal dans laquelle vous pouvez saisir des commandes exactement comme dans le terminal de GNOME.

#### Gestion des sessions

Tous les réglages, y compris taille et position des fenêtres, sont enregistrés lorsque vous quittez Anjuta. La gestion des sessions est toujours en cours de développement, aussi vous ne devez pas quitter Anjuta tant qu'il y a des documents non enregistrés. Anjuta affichera un avertissement si vous essayez de quitter avec des documents non sauvegardés encore ouverts.

## Opérations sur les fichiers

### Création d'un nouveau fichier et insertion de texte

#### Création d'un nouveau fichier

Pour créer un nouveau fichier, choisissez Fichier Nouveau dans la barre de menus ou cliquez sur le bouton Nouveau fichier de la barre d'outils principale. Un nouvel onglet apparaît dans l'éditeur (ou une nouvelle fenêtre si le document parent est dans une fenêtre). Les nouveaux documents seront appelés `Document non enregistré 1`, `Document non enregistré 2`, `Document non enregistré 3`, etc.

##### Enregistrement de fichier

Vous devriez enregistrer les nouveaux documents dès que possible pour éviter de perdre des données en cas d'arrêt brutal.

#### Assistant fichier

Pour créer un nouveau fichier, il est possible d'utiliser un assistant. Choisissez FichierNouveau Fichier dans la barre des menus. Cela ouvre la boîte de dialogue « Nouveau fichier ». Choisissez le type de fichier. Saisissez le nom du fichier. L'extension sera automatiquement ajoutée. Vous pouvez ajouter de l'information sur la licence (selon votre choix de licence) et créer un fichier d'en‑tête. Dans le cas d'un fichier d'en-tête C/C++, vous pouvez également ajouter un modèle d'en-tête. Cliquez sur Valider pour créer le fichier.

##### Assistant nouveau fichier

La boîte de dialogue ouvrir un fichier

Il se peut que Anjuta crée si besoin des fenêtres de nouveaux fichiers au cours de certaines opérations. Par exemple, des commandes Subversion telles que `Diff` et `View Log` créent des nouvelles fenêtres de fichier et y ajoutent leur sortie. Vous pouvez enregistrer les contenus de ces fenêtres dans de vrais fichiers si vous le désirez.

#### Insertion de macros

Vous pouvez utiliser des macros pour saisir rapidement des séquences répétitives de texte.

Le greffon Macro doit être activé.

##### Insertion

Il y a deux types de macros à votre disposition : les macros Anjuta et les macros utilisateur (affichées comme « Mes macros »). Les macros Anjuta ne sont pas modifiables mais vous pouvez définir et modifier vos propres macros utilisateur.

Pour insérer une macro, déplacez le curseur à l'endroit souhaité. Choisissez ÉditionMacros Macros.... Une boîte de dialogue apparaît. Choisissez la macro désirée dans la liste. Le résultat du développement de la macro est affiché dans la fenêtre et un résumé montré dans la boîte de dialogue. Cliquez sur Insérer pour insérer le texte de la macro à la position du curseur.

Une autre manière d'insérer une macro est de choisir ÉditionMacros Insérer une macro..., puis d'utiliser le raccourci clavier de la macro désirée.

###### Macro

La boîte de dialogue macro

##### Définition de macros

Dans la boîte de dialogue « Insérer une macro », cliquez sur Ajouter ou sélectionnez ÉditionMacros Ajouter une macro.... La fenêtre « Ajouter ou modifier une macro » apparaît. Saisissez le nom de la macro, choisissez ou définissez une catégorie et associez un raccourci clavier. Puis, saisissez le texte de la macro. Le caractère « | » indique la position du curseur après l'insertion de la macro. Cliquez sur Valider. La macro est ajoutée à la liste.

Vous pouvez également supprimer une macro en la sélectionnant dans la liste et en cliquant sur Supprimer. Ceci n'est bien sûr possible que pour les macros utilisateurs (Mes macros).

De la même manière, vous pouvez éditer et modifier une macro en la sélectionnant dans la liste et en cliquant sur le bouton Modifier.

###### Ajouter ou modifier une macro

La boîte de dialogue ajout/modification

##### Mots-clés de macros

Des mots-clés pour macros sont disponibles. Ils peuvent être incorporés dans des définitions de macro. Ces mots-clés de macros commencent et se terminent par le caractère « @ ».

Les mots-clés de macro disponibles sont @DATE_TIME@, @DATE_YMD@, @DATE_Y@, @USER_NAME@, @FILE_NAME@, @FILE_NAME_UP@, @FILE_NAME_UP_PREFIX@, @EMAIL@, @TABSIZE@, @INDENTSIZE@ et @USETABS@.

###### Mots-clés de macros

Les mots-clés de macros

### Ouverture et enregistrement de fichiers

1. Ouverture d'un fichier : Pour ouvrir un fichier existant, soit choisissez Fichier Ouvrir dans la barre de menus, soit cliquez sur le bouton Ouvrir dans la barre d'outils, soit pressez CtrlO. La boîte de dialogue Ouvrir un fichier apparaît.

   #### Boîte de dialogue pour ouvrir un fichier

   La boîte de dialogue ouvrir un fichier Choisissez ou saisissez le nom du fichier que vous souhaitez ouvrir, puis cliquez sur Ouvrir. Pour ouvrir plus d'un fichier à la fois, sélectionnez les fichiers à ouvrir en maintenant enfoncée la touche Ctrl et en cliquant sur chacun des fichiers, puis cliquez sur Ouvrir. Si vous changez d'avis, cliquez sur Annuler pour fermer la boîte de dialogue sans ouvrir de fichier.

   #### Boîte de dialogue pour ouvrir plusieurs fichiers à la fois

   La boîte de dialogue « Ouvrir un fichier » en mode sélection-multiple

   Vous pouvez activer l'option Afficher les fichiers cachés par l'intermédiaire du menu contextuel qui apparaît lorsque vous faites un clic-droit dans la boîte de dialogue « Ouvrir un fichier ». Cette option rend visibles dans la liste les fichiers cachés (fichiers commençant par « . »). Décochez l'option pour les masquer. La boîte de dialogue « Ouvrir un fichier » intègre également un filtre sur le type des fichiers. Choisissez le filtre approprié au type de fichier dans la boîte de dialogue : la liste des fichiers sera limitée à ceux du type choisi.

2. Enregistrement d'un fichier : Pour enregistrer un fichier, soit choisissez Fichier Enregistrer dans la barre de menus, soit cliquez sur le bouton Enregistrer dans la barre d'outils, soit pressez CtrlS. Le fichier sera enregistré. Si le fichier est nouveau, une boîte de dialogue Enregistrer le fichier sous apparaît. Saisissez un nom de fichier et cliquez sur Enregistrer pour enregistrer le nouveau fichier sous le nom indiqué. Enregistrer le fichier sous

   #### Sauvegarde automatique des fichiers

   Même si vous avez activé l'enregistrement automatique, Anjuta n'effectuera pas l'opération sur des nouveaux fichiers. Il faut les enregistrer manuellement une première fois. Il en est de même pour l'option Tout enregistrer. Vous devez enregistrer manuellement un fichier avant que l'enregistrement automatique ou Tout enregistrer ne s'applique à lui.

3. Enregistrement d'un fichier sous un nouveau nom : Vous pouvez explicitement enregistrer un fichier sous un nouveau nom. Pour ce faire, choisissez Fichier Enregistrer sous dans la barre de menus. Une boîte de dialogue Enregistrer le fichier sous apparaît et vous demande de saisir un nom de fichier. Saisissez le nom et cliquez sur Enregistrer.

   #### Écrasement d'un fichier lors d'un enregistrement sous

   Lorsque vous utilisez Enregistrer le fichier sous avec un nom de fichier existant, l'original n'est pas supprimé. Il reste dans l'état où il était lors de son dernier enregistrement. Si un fichier de ce nom existe déjà, une boîte de dialogue apparaît pour vous demander de confirmer que vous souhaitez bien l'écraser. En cliquant sur Oui vous écrasez le fichier existant avec le fichier en cours d'enregistrement.

4. Fermeture d'un fichier : Pour fermer un fichier, soit choisissez Fichier Fermer dans la barre de menus, soit cliquez sur le bouton Fermer dans la barre d'outils (vous pouvez également fermer un fichier en cliquant sur le X dans l'onglet avec son nom de fichier). Cela ferme le fichier courant. Si le fichier n'a pas été enregistré ou si c'est un nouveau fichier, alors Anjuta vous demandera d'enregistrer le fichier avant de le fermer.

### Modification des fichiers

Anjuta possède un grand nombre de fonctionnalités qui vous aident à modifier et à travailler avec les fichiers sources. Les paragraphes suivants vous indiquent comment utiliser quelques unes des intéressantes fonctionnalités à votre disposition.

#### Marges de l'éditeur

Les marges de l'éditeur : des marges sont ménagées sur la gauche de l'éditeur de texte ; chacune d'entre elles vise un objectif particulier. Trois marges sont disponibles : une pour les numéros de ligne, une pour des marqueurs et une pour des enroulements de code. Par défaut, (i.e. lorsque vous lancez Anjuta pour la première fois) seule la marge des enroulements de code est visible. Les autres peuvent être affichées avec Affichage Éditeur.

##### Marges de l'éditeur

La barre d'outils Marqueurs

La marge des numéros de ligne est la plus grande des trois (et légèrement plus foncée que les autres) ; elle affiche les numéros des lignes du document. La marge des numéros de ligne est affichée/masquée en cochant/décochant Affichage Éditeur Numéros de ligne en marge. Un clic-gauche sur cette marge sélectionne la ligne complète (y compris le caractère de fin de ligne final, s'il existe). Vous pouvez paramétrer les caractéristiques de la police de la marge des numéros de ligne dans les préférences.

La marge des marqueurs peut être affichée ou cachée via Affichage Éditeur Marqueurs en marge. Cette marge affiche des icônes pour marquer une ligne donnée. La marge peut afficher des marqueurs de signets (bleus et rectangulaires), des marqueurs de points d'arrêt (rouges et circulaires) et des marqueurs index de ligne (qui ressemblent à une flèche directionnelle jaune). Un marqueur de signet indique une ligne étiquetée ; il peut être affiché ou masqué via Aller à Signets Basculer le signet avec le curseur sur cette ligne. Un marqueur de point d'arrêt est utilisé dans le débogueur pour indiquer un point d'arrêt de débogage (consultez le chapitre Débogage pour plus d'informations). Le marqueur indicateur de ligne s'utilise pour indiquer la position actuelle dans le programme lors du débogage.

La marge des enroulements de code est l'endroit où s'affiche l'arborescence des enroulements. En cliquant sur les nœuds de l'arborescence, vous masquez ou affichez des blocs de code. Un symbole souligné est dessiné sous une ligne enroulée pour bien mettre en évidence la présence d'un bloc de code enroulé sous la ligne. Pour plus de détails sur l'enroulement de code, consultez le paragraphe Enroulement de code ci-dessous.

##### Marqueur invisible en marge

Si le marqueur en marge n'est pas visible, Anjuta affiche les marqueurs en modifiant la couleur d'arrière-plan d'une ligne. Par exemple, si un marqueur de point d'arrêt est positionné sur une ligne et que le marqueur en marge n'est pas visible, cette ligne sera affichée avec un arrière-plan rouge. De même pour les marqueurs de signets et l'index de ligne, les arrières-plans seront respectivement bleu ciel et jaune. Si vous n'appréciez pas cela (peut-être à cause du contraste de votre thème), activez la marge des marqueurs via Affichage Éditeur Marqueurs en marge.

##### Marqueurs de l'éditeur lorsque les marqueurs en marge sont invisibles

La barre d'outils Marqueurs

#### Guides de l'éditeur

L'éditeur peut être configuré pour afficher certaines informations habituellement invisibles sur le document : les guides d'indentation, les espaces blancs et les caractères de fin de ligne. Ces informations sont rendues visibles ou invisibles en cochant ou pas les éléments de menu correspondants dans Affichage Éditeur. Les guides d'indentation sont de petites lignes en pointillé reliant les accolades correspondantes dans le code source. Lorsque le curseur est sur une accolade, son guide d'indentation est mis en surbrillance pour mettre visuellement en valeur le niveau d'indentation.

##### Éditeur avec guides

Éditeur avec guides

#### Coloration syntaxique

Anjuta sait faire de la coloration syntaxique pour nombre de divers langages. Normalement, cette opération est automatique, le type du fichier étant défini par son extension. Si Anjuta ne sait pas déterminer le type de fichier, il n'y a pas coloration syntaxique. Vous pouvez forcer explicitement un style de coloration particulier en sélectionnant le style dans le menu Affichage Éditeur Coloration syntaxique.

Anjuta utilise un fichier de propriétés nommé `$prefix/share/anjuta/properties/anjuta.properties`, de même format qu'un fichier de propriétés SciTE mais sans les utiliser toutes. Le style de chaque élément pour chacun des langages est défini dans un fichier nommé `$prefix/share/anjuta/properties/styles.properties`. Il utilise quelques propriétés communes définies par Anjuta dans le fichier `$home/.config/anjuta/scintilla/editor-style.properties`.

#### Enroulement de code

Anjuta peut afficher les fichiers sources des langages structurés par blocs (tels que C, C++, Pascal et Java) avec des enroulements de code. Tous les blocs de code d'un fichier source sont enroulés ou déroulés en cliquant sur les points d'enroulement dans la marge des enroulements de code de la fenêtre Éditeur (habituellement un symbole +/- ou une flèche vers le haut/bas). Ces points d'enroulement apparaissent automatiquement pour les fichiers source qui utilisent des blocs de code.

L'enroulement du code est particulièrement utile lors de l'édition de grands fichiers source contenant des milliers de lignes. Une fois le code enroulé, le document apparaît condensé, facilitant le parcours et l'édition du fichier.

Veuillez noter que les enroulements de code et les guides d'édition ne sont disponibles qu'avec l'éditeur fondé sur Scintilla.

#### Mise en forme automatique du code source

Anjuta peut indenter automatiquement (mise en forme automatique) les fichiers d'en-tête ou les sources C ou C++. Les indentations donnent un aspect clair au code source, augmentent la lisibilité, réduisent la probabilité d'erreurs de syntaxe et surtout font gagner du temps. Pour indenter automatiquement le fichier source en cours, choisissez Édition Indentation automatique dans la barre de menu. Vous pouvez modifier le style de format en personnalisant vos choix dans les préférences.

### Analyseur de symboles

Vous pouvez parcourir les fichiers source C, C++ et d'en-tête en utilisant les étiquettes des fichiers. Une étiquette (ou symbole) fait référence à une entité nommée telle une définition de fonction, une structure ou une macro. Anjuta scrute les étiquettes disponibles dans les fichiers source C, C++ et d'en-tête ouverts.

Anjuta scrute automatiquement les étiquettes dans tous les fichiers source et d'en-tête des projets ouverts. Vous pouvez aller à n'importe quelle définition de fonction, de structure, de classe ou autres étiquettes sans avoir à ouvrir expressément le fichier la contenant. Vous n'avez même pas besoin de savoir dans quel fichier se trouve l'étiquette. L'afficheur de symboles donne la liste de tous les symboles disponibles dans le projet.

#### Parcourir les symboles

Parcourir les symboles

#### Synchronisation des étiquettes

Vous n'avez pas à vous préoccuper de la synchronisation ou de la mise à jour de la base de données des étiquettes. Anjuta se charge de tout. Vous avez juste à décider à quelle étiquette vous désirez vous rendre !

### Recherche et remplacement de texte dans les fichiers

#### Recherche

Pour rechercher une chaîne ou une expression régulière dans le fichier en cours, choisissez Édition Rechercher Rechercher... ou pressez CtrlAltF pour ouvrir la boîte de dialogue Rechercher et remplacer.

Utilisez la zone de saisie pour indiquer la chaîne à rechercher et indiquez s'il s'agit d'une chaîne normale ou d'une expression régulière. Vous pouvez également indiquer la direction, la sensibilité à la casse ou pas et la portée de la recherche. Cliquez sur Rechercher pour lancer la recherche.

Si la recherche est fructueuse, Anjuta se rend au texte correspondant ou réalise une autre action (selon l'action de recherche choisie dans l'onglet Cible de la recherche). Si la recherche est infructueuse, Anjuta affiche un message indiquant que le texte recherché n'a pas été trouvé.

Si vous voulez poursuivre la recherche, cliquez à nouveau sur le bouton Rechercher ou pressez CtrlG pour rechercher la correspondance suivante (utilisez MajCtrlG pour la correspondance précédente). Vous pouvez même modifier le texte à rechercher au cours de l'opération : saisissez la nouvelle chaîne dans la zone de texte Rechercher l'expression de la boîte de dialogue de recherche.

##### Boîte de dialogue de recherche de texte

Pour mettre fin à une longue recherche, appuyez sur le bouton Arrêter.

#### Définition de la portée de la recherche

Dans l'onglet Cible de la recherche, définissez la portée de la recherche et l'action à réaliser en cas de recherche fructueuse.

Vous pouvez définir le nombre maximum d'actions à réaliser.

##### Boîte de dialogue cible de la recherche

Vous pouvez choisir l'emplacement de la recherche.

##### Choix de l'emplacement de la cible de la recherche

##### Recherche dans des fichiers

Pour rechercher du texte dans le projet, définissez la valeur de Rechercher dans à « Tous les fichiers du projet ».

Dans l'onglet Recherche d'expression, saisissez le texte à rechercher et indiquez vos options de recherche, telles que les options Respecter la casse ou Correspondance sur les mots entiers. Cliquez sur Rechercher pour lancer la recherche.

Pour rechercher du texte dans un ensemble de fichiers, définissez la valeur de Rechercher dans à « Indiquez les motifs de fichiers ». Paramétrez la recherche et cliquez sur Rechercher pour la lancer.

###### Recherche dans des types de fichiers donnés

#### Spécification d'une action de recherche

Vous pouvez choisir l'action à réaliser lorsqu'une recherche aboutit.

Selon les choix précédents (Recherche dans, Direction de recherche, etc.), il se peut que certaines actions ne soient pas disponibles.

##### Choix de l'action sur la cible de la recherche

#### Remplacement

« Rechercher et remplacer » se fait de manière similaire à une simple recherche de texte, excepté le fait que vous devez également indiquer un texte de remplacement dans la zone de saisie Remplacer par ; vous préciserez également si vous désirez ou pas être consulté avant chaque remplacement (« Remplacer la prochaine correspondance » ou « Remplacer toutes les correspondances »).

##### Remplacement

Choisissez Remplacer pour remplacer le texte correspondant ou Rechercher pour aller à la correspondance suivante.

#### Paramètres de la recherche

Vous pouvez également enregistrer des options de recherche.

L'élément en surbrillance rouge est l'élément actif. L'élément par défaut indique les paramètres de recherche chargés lorsque Anjuta démarre.

##### Boîte de dialogue des paramètres de la recherche

### Impression d'un fichier

Vous pouvez afficher un aperçu avant impression en choisissant Fichier Aperçu avant impression. L'aperçu d'impression affiché correspond au traitement du fichier actuel. La mise en valeur du code source dans l'éditeur est conservée à l'identique dans l'aperçu (et l'impression qui en découle). L'onglet Impression des préférences relatives au greffon de l'éditeur contient des options supplémentaires : elles vous permettent d'imprimer les numéros de ligne, d'activer la césure des lignes et/ou d'ajouter un en-tête de page.

#### Aperçu avant impression d'un fichier C

Aperçu avant impression

#### Préférences de l'impression

Préférences de l'impression

Si, satisfait de l'aperçu, vous êtes prêt à lancer l'impression, choisissez Fichier Imprimer ou Imprimer dans la fenêtre de l'aperçu pour afficher la boîte de dialogue d'impression montrée ci-dessous. Sélectionnez les paramètres d'imprimante appropriés et cliquez sur Imprimer pour imprimer le fichier.

Vous pouvez également choisir une orientation paysage ou portrait pour la page, la taille du papier, l'impression recto-verso et le type de papier. Faites les réglages correspondant à votre type d'imprimante, sinon il se pourrait que l'impression ne soit pas correcte.

#### Boîte de dialogue impression

Boîte de dialogue impression

## Gestion de projet

Anjuta possède un puissant greffon de gestion de projet, greffon capable d'ouvrir la plupart des projets basés sur automake/autoconf. Il se peut qu'il échoue pour certains projets configurés de manière exotique, mais si le projet utilise automake/autoconf de manière standard, cela devrait fonctionner.

Le côté élégant de la chose est que Anjuta n'enregistre dans la structure du projet aucune information supplémentaire par rapport à celle déjà existante. Autrement dit : il n'y a aucune donnée de projet gérée séparément par Anjuta et tout le traitement du projet s'effectue directement dans sa structure. Il est donc possible de maintenir ou de développer un projet en dehors de Anjuta sans avoir à le convertir d'un ou vers un format spécifique à Anjuta. Puisque les projets Anjuta ne sont techniquement que des projets automake, un développement mixte (à la fois avec et sans utilisation de Anjuta ) ou des allers-retours entre Anjuta et d'autres outils sont possibles sans aucune interférence.

### Création d'un nouveau projet

#### Création d'un projet à partir d'un modèle

Le greffon assistant de projet utilise un puissant outil de génération de modèles appelé autogen. Tous les nouveaux projets sont créés à partir de modèles écrits en utilisant la syntaxe autogen. L'assistant de projet vous permet de créer de nouveaux projets à partir d'un choix parmi des modèles de projet. La sélection se fait parmi des projets simples génériques, plats (sans sous-dossier), GTK+, GNOME, Java, Python, etc. De nouveaux modèles peuvent être facilement téléchargés et installés puisque chaque modèle n'est qu'une collection de fichiers textes.

Pour créer un projet, choisissez l'élément de menu FichierNouveau Projet pour lancer l'assistant d'application. Lisez attentivement la première page. Cliquez sur Suivant pour poursuivre.

À la deuxième page, choisissez le type d'application à créer. Cliquez sur Suivant pour poursuivre.

Aux pages suivantes, saisissez les informations nécessaires pour le projet. Vous pourrez modifier ces réglages plus tard, mais il est conseillé de les définir correctement dès le départ afin de conserver l'intégrité du projet. L'espace ou tout caractère non-alphanumérique, sauf le souligné (_) et le tiret (-), est interdit dans la plupart des zones de saisie de texte qui suivent (sauf peut-être la zone Auteur).

Vous indiquerez également si le projet doit gérer l'internationalisation en utilisant gettext (consultez la page d'information sur gettext pour plus de détails). Cette fonctionnalité construit un projet plurilingue avec prise en charge de diverses langues telles que anglais, français et néerlandais. Les autres options servent à paramétrer, en début de chaque fichier, l'insertion ou non du commentaire sur le statut du copyright GNU et à activer des informations dans le menu du bureau GNOME si nécessaire. La prise en charge des bibliothèques partagées vous permet d'ajouter les modules correspondants plus tard. Si vous prévoyez d'utiliser des bibliothèques dans votre projet, il est bon de l'activer. Selon le type de projet créé, il se peut que Anjuta demande des informations supplémentaires.

La dernière étape consiste à vérifier les informations fournies. Cliquez sur Terminer pour lancer la génération du projet.

Une fois le projet généré, vous pouvez l'essayer en le construisant et en l'exécutant.

#### Importation de projets

La fonction d'importation de projets s'utilise pour importer un projet existant en le convertissant en projet Anjuta. Lancez l'assistant d'importation de projet avec FichierNouveau Projet basé sur des sources existantes et suivez les instructions de l'assistant. Une fois importé, le projet peut ensuite être ouvert dans Anjuta comme tout autre projet Anjuta.

La fonction d'importation de projet ne fonctionne correctement que si le projet existant utilise autoconf/automake ou, à l'extrême limite, un fichier Makefile brut.

### Chargement et enregistrement de projets

#### Chargement de projets

Pour ouvrir un projet, choisissez l'élément de menu Fichier Ouvrir…. Choisissez le fichier projet (`*.anjuta`) dans la boîte de dialogue et cliquez sur Ouvrir.

Si le projet a récemment été ouvert, il sera alors listé dans le menu FichierOuvrir un document récent. Choisissez le nom du fichier projet dans la liste pour l'ouvrir.

Dès que le projet est ouvert, Anjuta se place en mode projet. La fenêtre projet comporte trois volets. Le premier est le volet Projet qui énumère les fichiers du projet classés par type. Le second est l'analyseur de symboles dont il a été question à la section Analyseur de symboles. Le troisième liste les fichiers du projet de manière plus ou moins semblable à un mini explorateur de fichiers. Dans le volet Fichiers, tous les fichiers faisant partie de l'arborescence du projet sont visibles. Un clic droit sur l'un des fichiers fait apparaître un menu contextuel d'opérations sur ces fichiers.

Également, si le projet est une structure CVS, les numéros correspondant aux révisions du fichier seront affichés à droite du nom dans le volet d'affichage des fichiers.

#### Enregistrement de projets

Le projet est automatiquement enregistré quand vous le fermez étant donné que toutes les modifications sont réalisées directement dans la structure du projet.

### Structure du projet

Voici la fenêtre Projet avec son menu contextuel (accessible par un clic droit).

#### Fenêtre Projet

La fenêtre projet

La fenêtre projet affiche la hiérarchie automake du projet organisée en groupes de cibles. Les groupes correspondent aux répertoires du projet et les cibles aux cibles normales d'automake (à ne pas confondre avec les cibles make). La fenêtre Projet possède en fait deux parties : la partie basse affiche la hiérarchie complète du projet alors que la partie haute liste directement les cibles importantes. Les cibles importantes comprennent celle des exécutables et celle des bibliothèques ; cette vue les rend accessibles facilement. Cette disposition est utile particulièrement dans le cas de gros projets pour lesquels la hiérarchie peut être profonde et difficile à parcourir à partir de l'arborescence seule. Les cibles sont, à leur tour, composées de fichiers sources.

- Les groupes s'utilisent pour organiser les cibles de manière logique. Un projet peut contenir un nombre quelconque de groupes. Chaque groupe peut posséder des sous-groupes et également des cibles. Dans les projets automake, les groupes ne sont que des sous-répertoires du projet. Le groupe de plus haut niveau est toujours désigné par « / ».

- Les cibles sont les cibles construites dans le projet, telles que programmes (binaires exécutables), scripts, bibliothèques et données diverses. Toutes les cibles ne sont pas construites à partir de sources, certaines existent uniquement pour organiser les sources ; par conséquent elles peuvent ne pas exister physiquement (par ex. une cible de données diverses). Les cibles font partie des groupes. Consultez « Ajout de cibles » pour obtenir une liste complète des types de cibles disponibles.

- Les fichiers source peuvent être utilisés pour construire des cibles, quoique certains fichiers sources ne soient que relatifs aux cibles. Ils n'existent que dans des cibles. Beaucoup de cibles demandent des types bien définis de fichiers source (par ex. les types de cible Programmes et Bibliothèques), mais certains acceptent n'importe quels fichiers (par ex. une cible Données Diverses).

Chaque groupe et cible du projet peut être configuré dans la manière standard automake. Vous pouvez paramétrer les drapeaux du compilateur et de l'éditeur de liens directement pour chaque cible ou préciser des options utilisateur pour configure. Les groupes vous permettent de définir une destination d'installation pour leurs cibles.

Tout comme le gestionnaire de fichiers, la vue du gestionnaire de projets dispose également d'actions de commodité (accessibles à partir du menu contextuel) pour les fichiers sources et les cibles.

De nombreux outils en ligne de commande sont disponibles pour maintenir et gérer un projet ; chaque outil possède ses règles et possibilités propres. Anjuta essaye d'automatiser la plupart des opérations courantes en utilisant des greffons. Cependant, il se peut qu'à l'occasion vous ayez quand même besoin de réaliser certaines opérations manuellement.

Vous pouvez modifier une structure de projet en utilisant un outil externe ou en modifiant à la main des fichiers du projet. Que le projet soit chargé ou pas dans Anjuta n'a pas d'importance. Anjuta se mettra à jour en tenant compte de toutes les modifications externes effectuées sur le projet.

### Groupes et cibles

#### Ajout de groupes

Pour ajouter un nouveau groupe (qui est un dossier dans les projets fondés sur automake) :

- choisissez Projet Ajouter un groupe pour faire apparaître la boîte de dialogue « Nouveau groupe »,

- choisissez le groupe dans lequel vous voulez ajouter un nouveau groupe,

- saisissez le nom du nouveau groupe et cliquez sur Ajouter.

Avec les projets automake, un nouveau dossier portant le nom indiqué est créé dans le répertoire du groupe parent.

Vous pouvez également ajouter un nouveau groupe directement à partir de la fenêtre Projet. Faites un clic droit sur le groupe dans lequel vous voulez ajouter un nouveau groupe, puis choisissez Ajouter un groupe dans le menu contextuel.

#### Suppression de groupes

Pour supprimer un groupe :

- faites un clic droit sur le groupe dans la vue du gestionnaire de projet,

- choisissez Retirer dans le menu contextuel.

La cible et les sources associées à ce groupe sont ainsi retirées du projet (elles ne sont pas pour autant supprimées du système de fichiers ; vous pourrez les rajouter au projet plus tard si vous le souhaitez).

#### Ajout de cibles

Pour ajouter une nouvelle cible :

- choisissez Projet Ajouter une cible pour faire apparaître la boîte de dialogue « Nouvelle cible »,

- choisissez le groupe dans lequel vous voulez ajouter la cible,

- sélectionnez le type de cible,

- saisissez le nom de la nouvelle cible et cliquez sur Ajouter.

Vous pouvez aussi ajouter une nouvelle cible directement à partir de la fenêtre Projet. Faites un clic droit sur le groupe dans lequel vous voulez ajouter la cible, puis choisissez Ajouter une cible dans le menu contextuel.

Les noms des cibles doivent normalement avoir des préfixes et des suffixes normalisés selon le type de la cible. Anjuta vous prévient si un nom n'est pas valide et il se peut qu'il vous suggère un exemple de nom valide.

Voici les différents types de cibles pour des projets automake :

- Programme pour les binaires exécutables. Choisissez ce type pour ajouter un exécutable au projet. Par défaut, toutes les cibles programmes sont installées dans le répertoire standard des exécutables, par ex. /usr/bin ou /usr/local/bin. Vous pouvez modifier ce comportement en indiquant un autre dossier d'installation dans les propriétés du groupe contenant la cible.

- Bibliothèque partagée pour les bibliothèques partagées ou dynamiques. Choisissez ce type si vous ajoutez une bibliothèque partagée au projet. Par défaut, toutes les bibliothèques partagées sont installées dans le répertoire standard des bibliothèques, par ex. /usr/lib ou /usr/local/lib. Vous pouvez modifier ce comportement en indiquant un répertoire d'installation différent dans les propriétés du groupe contenant la cible.

- Bibliothèque statique pour les bibliothèques statiques. Choisissez ce type si vous ajoutez une bibliothèque statique au projet. Par défaut, toutes les bibliothèques statiques sont installées dans le répertoire standard des bibliothèques, par ex. /usr/lib ou /usr/local/lib. Vous pouvez modifier ce comportement en indiquant un autre répertoire d'installation dans les propriétés du groupe contenant la cible.

- Module Java pour les modules Java. Choisissez ce type si vous regroupez des sources Java dans un module. Pour ce type de cible vous devez préciser un répertoire d'installation dans lequel les fichiers .class seront placés. Le nom du répertoire est à définir dans les propriétés du groupe contenant la cible.

  Il ne peut y avoir qu'un seul module Java par groupe. Il s'agit d'une restriction imposée par automake. Veuillez lire la page d'information sur automake pour plus de détails.

- Module Python pour des modules Python. Choisissez ce type si vous regroupez des sources Python dans un module. Pour ce type de cible vous devez préciser le répertoire d'installation dans lequel les fichiers sources seront installés. Le nom du répertoire est à définir dans les propriétés du groupe contenant la cible.

- Scripts pour regrouper des scripts. Ils seront installés dans le répertoire standard des exécutables.

- Données diverses pour regrouper de simples fichiers dans un projet. Vous devez préciser un répertoire d'installation dans les propriétés du groupe.

- Fichiers d'en-tête pour regrouper les fichiers d'en-tête C/C++ à installer sur un système (par exemple ceux faisant partie d'une bibliothèque d'API). Pour les fichiers d'en-tête qui n'ont pas besoin d'être installés, placez-les dans la cible Programme parmi les fichiers sources. Les fichiers d'en-tête seront installées dans le répertoire standard « include » à moins qu'un autre chemin d'installation n'ait été précisé dans les propriétés du groupe.

- Documentation Man et Documentation Info pour regrouper respectivement les documentations man et info. Par défaut, les fichiers de documentation sont placés dans les répertoires standard d'installation.

#### Suppression de cibles

Pour supprimer une cible :

- faites un clic droit sur la cible dans le volet du Projet,

- choisissez Retirer dans le menu contextuel.

Les sources associées aux cibles sont également retirées du projet (elles ne sont pas pour autant supprimées du système de fichiers).

### Ajout et retrait de fichiers

#### Ajout de fichiers source

Choisissez l'élément de menu Projet Ajouter un fichier source.... Dans la boîte de dialogue, choisissez la cible dans laquelle le fichier doit être ajouté et le fichier lui-même. Vous pouvez ajouter plusieurs fichiers à la fois. Pour cela, sélectionnez plusieurs fichiers dans la boîte de dialogue en utilisant, soit la touche Maj, soit la touche Ctrl, puis cliquez sur Ajouter pour joindre les fichiers au projet.

Dans la boîte de dialogue, le fichier actif dans l'éditeur est présélectionné par défaut pour ajout. Une autre méthode pratique pour ajouter un fichier consiste à faire un clic droit sur celui-ci dans le volet Fichiers et à choisir Ajouter au projet dans le menu contextuel.

Si le fichier choisi fait déjà partie du projet, Anjuta ne le rajoute pas et vous prévient que le fichier a déjà été incorporé.

Si le fichier choisi n'est pas dans le répertoire du projet, vous devrez confirmer que vous acceptez qu'une copie du fichier soit déposée dans le dossier cible. Anjuta ne peut pas ajouter des fichiers hors du répertoire projet sans les y copier au préalable.

#### Retrait de fichiers source

Pour retirer un fichier du projet, faites un clic droit sur le fichier à retirer dans le volet Projet et choisissez Retirer dans le menu contextuel.

Un boite de dialogue de confirmation apparaît et le fichier est retiré du projet.

##### Le fichier n'est pas détruit !

Le fichier n'est pas supprimé du système de fichiers. Il existe toujours ; vous pourrez le rajouter au projet si vous le souhaitez. Le fichier est seulement retiré de la liste du projet et il ne prendra part à aucune opération du projet telle que compilation, construction ou distribution.

### Configuration du projet

La configuration du projet présuppose le paramétrage correct des drapeaux de construction pour les cibles, les groupes et pour le projet lui-même. Vous pouvez configurer ces drapeaux dans les boîtes de dialogue respectives concernant les propriétés.

Vous pouvez utiliser sans restriction les variables autoconf et automake automatiquement définies pour le projet lors de la configuration. Outre ces variables, vous pouvez également définir vos propres variables dans Propriétés du projet et les utiliser dans des définitions de propriétés. Cela facilite la mise à jour ultérieure des drapeaux, particulièrement lorsqu'une variable est utilisée dans plusieurs cibles.

Quelques-unes des nombreuses variables habituelles sont énumérées ci-après. Pour obtenir une liste complète, consultez la documentation info d'automake.

- $(prefix) : le préfixe d'installation. Le projet est installé dans divers sous-répertoires sous ce préfixe. Sa valeur par défaut est /usr/local.

- $(bindir) : le répertoire d'installation pour les exécutables binaires. Toutes vos cibles exécutables et vos scripts sont installés dans ce répertoire. Sa valeur par défaut est $(prefix)/bin.

- $(libdir) : le répertoire d'installation pour les bibliothèques. Toutes vos bibliothèques (partagées et statiques) sont installées dans ce répertoire ou dans un sous-répertoire. Sa valeur par défaut est $(prefix)/lib.

- $(module_CFLAGS) et $(module_LIBS) : ces drapeaux sont définis par configure pour les dépendances de votre projet. Les paquets utilisés par le projet sont définis dans Propriétés du projet. 'module' représente un groupe de paquets que vous avez précisé dans les propriétés du projet comme indiqué ci-dessous.

#### Propriétés du projet

La boîte de dialogue « Propriétés du projet » ne s'ouvre qu'à l'aide de l'élément de menu Projet Propriétés à partir de la barre de menu principale. Vous pouvez :

- définir le nom, la version et l'URL du projet dans l'onglet Général. Des variables configure peuvent aussi être utilisées dans ces champs. L'URL sert pour les rapports d'anomalies du projet.

- ajouter ou supprimer des dépendances à votre projet dans l'onglet Paquets. Voir ci-dessous pour plus de détails.

- créer d'autres variables configure dans l'onglet Variables afin de les utiliser dans des propriétés de groupe ou de cible.

Les dépendances sont des paquets externes utilisés par le projet ; ils sont donc requis pour la construction. Seuls les paquets installés en utilisant pkg-config peuvent être ajoutés à partir de cette interface. Pour les autres, le fichier configure.ac doit être modifié manuellement.

##### Boîte de dialogue « Propriétés du projet »

Boîte de dialogue « Propriétés du projet »

Les dépendances de paquets externes sont regroupées dans des modules afin que les combinaisons des drapeaux de construction puissent être définis de manière pratique pour les différentes cibles. Les modules ne sont que des groupements arbitraires de paquets ; ils peuvent recevoir n'importe quel nom (seuls les caractères alphanumériques et « _ » sont autorisés dans les noms de modules). Habituellement, leur nom s'inspire de celui des cibles dans lesquelles ils sont utilisés. Par conséquent, pour de petits projets avec une seule cible, un seul module suffit pour contenir toutes les dépendances.

Chaque paquet exporte un jeu de drapeaux pour le compilateur et pour les bibliothèques. Ils sont regroupés pour tous les paquets dans un même module ; les variables configure $(module_CFLAGS) et $(module_LIBS) y sont définies. Ces variables peuvent être utilisées dans les Propriétés de groupe et Propriétés de cible.

Pour ajouter une dépendance de paquet :

- choisissez Projet Propriétés pour afficher la boîte de dialogue « Propriétés du projet »,

- sélectionnez l'onglet Paquets pour faire apparaître la page correspondante,

- choisissez le module auquel ajouter le paquet. S'il n'y a encore pas de module créé ou pas de module approprié, créez-le en cliquant sur Ajouter un module. Donnez-lui un nom judicieux, de préférence en MAJUSCULES pour être en harmonie avec les autres variables configure (n'utilisez que des caractères alphanumériques et « _ ») et pressez sur Entrée pour le créer.

- cliquez sur Ajouter un paquet pour faire apparaître la boîte de dialogue de sélection du paquet,

- choisissez le paquet à ajouter et cliquez sur Ajouter,

- cliquez sur Fermer pour fermer la boîte de dialogue des propriétés.

#### Propriétés du groupe

Pour modifier les propriétés d'un groupe, double-cliquez sur le groupe dans le volet Projet pour ouvrir la boîte de dialogue Propriétés du groupe (vous pouvez aussi cliquer avec le bouton droit sur le groupe et choisir Propriétés dans le menu contextuel).

##### Boîte de dialogue « Propriétés du groupe »

Boîte de dialogue « Propriétés du groupe »

La totalité des propriétés d'un groupe s'applique à toutes les cibles qu'il contient. Ainsi, tous les drapeaux de compilation ou d'édition des liens définis pour un groupe feront automatiquement partie des cibles qu'il contient (en plus des propriétés individuelles de chaque cible). Les champs suivants sont disponibles dans la boîte dialogue Propriétés :

- Includes : définissez ici les répertoires include pour les cibles C et C++. Vous devez donner la syntaxe complète de l'option include du compilateur ici, par ex. -I/usr/include/blabla. Les chemins include sont utilisés pour rechercher les fichiers d'en-tête inclus dans les fichiers source (vous pouvez également ajouter ici d'autres drapeaux de compilation mais il est préférable de les définir dans le champ drapeaux de compilation comme indiqué ci-dessous).

- Drapeaux du compilateur : définissez ici les drapeaux spécifiques au compilateur. Il y a différents champs pour les diverses catégories de compilateurs. Les drapeaux pouvant être définis ici dépendent du compilateur réellement utilisé. Le compilateur utilisé par défaut pour le C/C++ est gcc/g++ (le compilateur C GNU). Consultez la documentation info gcc pour plus de détails.

- Répertoires d'installation : la boîte de dialogue affiche un champ pour chaque cible du groupe qui nécessite un répertoire d'installation. Définissez chaque répertoire d'installation relativement à l'une des nombreuses variables de répertoire automake telles que $(prefix), $(bindir), $(libdir) ou $(datadir).

#### Propriétés de cible

Toute propriété définie pour une cible ne s'applique qu'à cette cible. Une cible hérite également des propriétés du groupe auquel elle appartient.

Pour définir une propriété de la cible, double-cliquez sur la cible dans le volet Projet. Vous ouvrez ainsi la boîte de dialogue Propriétés de la cible (vous pouvez aussi cliquer avec le bouton droit sur la cible et choisir Propriétés dans le menu contextuel).

##### Boîte de dialogue « Propriétés de la cible »

Boîte de dialogue « Propriétés de la cible »

Vous pouvez ajouter ici, pour une cible donnée, les modules que vous avez incorporés dans Propriétés du projet. Pour activer un module, cochez la case en face de son nom. Cela ajoute automatiquement les chemins include et les drapeaux du compilateur à cette cible et active l'utilisation du module dans cette cible.

##### Options de cible avancées

Les champs suivants sont disponibles pour la configuration avancée de la cible. Ils apparaissent en cliquant sur le bouton Avancé... de la boîte de dialogue « Propriétés de la cible ».

###### Boîte de dialogue « Propriétés de la cible »

Boîte de dialogue « Propriétés de la cible »

- Paramètres du compilateur : définissez ici les drapeaux spécifiques au compilateur. Il y a divers champs selon les différentes catégories de compilateurs. Les drapeaux définis ici dépendent du compilateur réellement utilisé. Le compilateur par défaut utilisé pour le C/C++ est gcc/g++ (le compilateur C GNU). Consultez la documentation info gcc pour plus de détails.

- Drapeaux de l'éditeur de liens : définissez ici les drapeaux de l'éditeur de liens à utiliser au cours de l'édition de lien de la cible. Ces drapeaux ne s'appliquent qu'aux cibles Programmes et Bibliothèques. Consultez la documentation info ld pour connaître les options disponibles de l'éditeur de liens.

- Bibliothèques : définissez ici les bibliothèques dont la cible dépend.

## Construction

Anjuta gère les projets autotools. Il est capable de se débrouiller avec d'autres types de projets, tels que les projets utilisant un Makefile écrit par l'utilisateur, mais l'interface de construction actuelle cible les projets autotools. Une certaine connaissance de ceux-ci est utile pour mieux comprendre comment un projet est construit.

Un projet autotools est construit en trois étapes :

1. Génération

2. Configuration

3. Construction

La construction est l'étape principale au cours de laquelle tous les fichiers cibles sont générés à partir des fichiers source. Elle se divise en deux phases : compilation et édition des liens. Pendant la phase de compilation chaque fichier objet est généré à partir du fichier source correspondant. Par exemple, un fichier source `hello.c` génère `hello.o` après compilation. Normalement, vous n'avez pas à vous soucier de ces fichiers objets — considérez-les comme des fichiers intermédiaires. Pendant la phase d'édition des liens, tous les fichiers objet et les bibliothèques sont liés ensemble pour créer l'exécutable final. Certains langages de programmation ne nécessitent pas les phases compilation et édition de liens. De plus, l'étape construction peut être utilisée pour générer d'autres fichiers, comme une documentation qui ne nécessite pas de telles phases.

La configuration est l'étape pendant laquelle l'arborescence des sources est adaptée à votre système. Les projets autotools peuvent être construits sur un large éventail de systèmes utilisant des compilateurs différents et possédant des fonctions de bibliothèques différentes. Cette étape lance un script appelé `configure` qui vérifie les diverses caractéristiques du système et crée quelques uns des fichiers nécessaires à la réalisation de la construction (tels que `Makefile` et `config.h`). Cette étape est également utilisée pour sélectionner les options de construction ; par exemple une option de construction peut désactiver l'optimisation afin de rendre plus facile le débogage ou désactiver des parties expérimentales d'un programme.

La génération est l'étape pendant laquelle le script `configure` et d'autres fichiers en relation sont créés. Le script `configure` utilisé ci-dessus doit être capable de s'exécuter sur des systèmes différents tout en vérifiant beaucoup de choses. Il serait très difficile de l'écrire à la main. De plus autotools impose des règles d'organisation de projet telles que la présence obligatoire de certains fichiers : `NEWS` et `COPYING` par exemple. Il comprend plusieurs outils pour créer les fichiers nécessaires à partir de fichiers plus simples écrits par le développeur tels que `configure.in` (ou `configure.ac`) et `Makefile.am`. Tous ces outils sont ordinairement lancés par un script appelé `autogen.sh` dans le répertoire du projet. Cette étape n'est utile qu'au développeur (quelqu'un qui modifie les sources) car le script `configure` ne dépend que des fichiers sources et est distribué dans le paquet du projet. Notez que les fichiers `Makefile` créés par configure comprennent des règles pour régénérer automatiquement le projet si besoin est, il ne sera donc souvent pas nécessaire de le relancer directement.

Lisez les pages info relatives à automake et autoconf pour plus de détails sur la manière dont ces outils fonctionnent.

### Génération et configuration

#### Configuration d'un projet

Vous devez mener à bonne fin l'étape de configuration pour pouvoir construire le projet. Elle est habituellement lancée une seule fois avant une première construction — par exemple, tout de suite après avoir extrait l'archive tar des sources d'une distribution de projet. Après cela, la configuration est automatiquement gérée par les processus ultérieurs de construction. Si vous avez utilisé l'Assistant projet pour créer l'application, vous n'avez alors pas à lancer cette étape séparément : l'assistant l'exécute, considérant qu'elle fait partie du processus de génération du projet.

Il n'est pas obligatoire de ne lancer la configuration qu'une seule fois. Elle peut être relancée n'importe quand, habituellement quand les options de configuration sont à modifier. Vous noterez que si le fichier `config.h` dans le répertoire de plus haut niveau est modifié, une nouvelle exécution de `configure` ne l'écrasera pas.

Les deux étapes génération et configuration se lancent à partir du même élément de menu : Construire Configurer le projet…. Cet élément de menu fait apparaître une boîte de dialogue dans laquelle vous pouvez choisir :

- l'alternative du lancement ou non de la génération

  La génération doit être effectuée une fois au début du projet ; par la suite, le processus de construction la gère automatiquement. Vous pouvez forcer une nouvelle exécution en cochant la case Régénérer le projet ; vous serez peut-être amené à faire cela si vous rencontrez des problèmes au cours de la construction d'un projet (par ex. si des erreurs de construction sont signalées après avoir modifié beaucoup de fichiers de construction).

- le nom de la configuration

  Ce nom est utilisé pour se référer à chaque configuration. Certaines configurations (défaut, débogage, optimisée) sont déjà prédéfinies. Chaque configuration possède son répertoire de construction et ses options de configuration.

- le répertoire de construction

  C'est le nom du répertoire de construction. Dans la configuration par défaut, c'est le même répertoire que celui des sources, mais autotools sait gérer la construction dans un autre répertoire.

  Chaque configuration doit avoir un répertoire de construction distinct ; donc, si une configuration utilise le répertoire des sources, vous ne pourrez pas y placer une autre configuration en même temps. Vous devez lancer Construire Enlever la configuration et supprimer la configuration utilisant le répertoire source avant d'y placer la nouvelle.

- les options de configuration

  Ces options sont transmises au script `configure`. Certaines sont standards, telles que --prefix et CFLAGS ; d'autres dépendent du projet. Vous pouvez obtenir une liste des options de configuration autorisées en lançant le script `configure` avec l'option `--help`.

#### Sélection d'une configuration

Si vous avez créé différentes configurations, vous pouvez choisir celle qui sera active en la sélectionnant dans Construire Sélectionner la configuration.

#### Effacement d'une configuration

Pour nettoyer le projet et le retrouver dans un état nécessitant de relancer la configuration, choisissez Construire Enlever la configuration. La commande `make distclean` sera exécutée ; elle supprime plus de fichiers que l'option Nettoyer le projet. En d'autres termes, le projet sera comme s'il venait d'être extrait d'une archive tar de distribution. Notez que cela n'efface pas le répertoire de la configuration ; ce que vous pouvez faire si vous le souhaitez.

### Compilation et construction

#### Compilation d'un fichier

Dans un projet, des fichiers sources particuliers peuvent être compilés isolément en fichiers objets (fichiers `*.o`). Même si vous n'avez pas en règle générale à vous occuper de ces fichiers objets, il est parfois pratique de compiler un fichier au préalable (pour vérifier par exemple qu'il n'y a pas d'erreur de syntaxe). La construction intégrale d'un projet peut demander beaucoup de temps, en particulier pour les applications les plus grandes et les plus complexes. Par conséquent, vous serez probablement amené à faire beaucoup d'itérations édition/compilation pendant le développement d'un projet.

Pour compiler un fichier, choisissez l'élément de menu Construire Compiler ou pressez F11. Le fichier actif sera compilé.

#### Construction d'un exécutable

Anjuta ne possède pas de commande d'édition de liens indépendante tout simplement parce qu'elle n'est pas nécessaire. Le processus de construction compile tous les fichiers sources et fait l'édition des liens avec les bibliothèques nécessaires. La commande de construction ne compile pas à nouveau les fichiers déjà à jour (cela s'appelle la vérification des dépendances). Si vous avez déjà construit le projet et qu'aucun fichier avec dépendance n'a été modifié, même l'étape d'édition des liens sera sautée.

Comment la vérification des dépendances influence-t-elle le développement d'un projet ? Si vous avez modifié un fichier, tous les fichiers sources qui dépendent du fichier modifié sont compilés à nouveau. La dépendance de tous les fichiers (pas seulement les fichiers objets et les exécutables) du projet est vérifiée pendant le processus de construction. Si un fichier particulier dépend d'un autre fichier modifié, alors ce fichier est régénéré.

Imaginez ce que serait votre vie (de programmeur) si la vérification des dépendances n'existait pas ? Si vous ne pouvez pas encore répondre maintenant, vous saurez le dire lorsque vous commencerez à développer des gros projets !

Construire Construire construit tous les fichiers dans le répertoire du fichier actif courant.

Construire Construire le projet construit l'ensemble du projet — tous les sous-répertoires sont construits récursivement.

### Autres opérations

#### Création d'un paquet de distribution

Pour construire l'archive tar de distribution du projet, choisissez Construire Construire l'archive tarball. Une archive tar (`*.tar.gz`) sera créée et placée dans le répertoire de plus haut niveau du projet. Copiez le fichier dans un endroit sûr pour la distribution.

#### Installation d'un projet

Choisissez l'élément de menu Construire Installer pour installer l'application générée sur votre système.

##### Installation dans le système

Vous devez être connecté en tant que root pour réaliser une installation dans le système. Notez également que pour qu'une application GNOME utilise les fichiers pixmap du projet, elle doit être installée en tant qu'application système. Sinon, lorsque l'application est exécutée dans le projet, beaucoup d'erreurs « pixmap not found » seront signalées. Dans les préférences de construction, vous pouvez configurer Anjuta pour utiliser la commande `sudo` ou `su` avant d'installer le projet.

#### Nettoyage

Cela supprime tous les fichiers générés par le processus de construction, y compris les fichiers objets (fichiers `*.o`) et les exécutables. Cette fonctionnalité est appliquable à un répertoire ou à tout le projet.

Choisissez l'élément de menu Construire Nettoyer le projet pour nettoyer tous les répertoires du projet.

Choisissez l'élément de menu Construire Nettoyer pour nettoyer uniquement le répertoire du fichier actif actuel.

## Débogage

Déboguer est humain. Réparer l'anomalie est divin...

Eh bien, ce paragraphe n'abordera que l'aspect humain. L'aspect divin est laissé à vos bons soins !

Lorsqu'un programme ne se comporte pas de la manière prévue, on dit que le programme contient un bogue. Un bogue n'est pas une erreur de compilation — les erreurs de compilation sont relativement faciles à résoudre parce que le compilateur vous indique où se situe le problème. Au contraire, les bogues sont des erreurs qui surviennent pendant l'exécution d'un programme et ils peuvent être difficiles (parfois très difficiles !) à détecter.

Tous les programmes que l'on pourrait penser sans bogue ne le sont jamais totalement. Le seul objectif que vous puissiez vous fixer est de diminuer le nombre de bogues qu'ils contiennent. Le processus de réparation de bogues s'appelle le débogage et l'outil utilisé pour déboguer s'appelle le débogueur. Anjuta fournit un environnement très convivial et puissant à la fois (en fait, une interface graphique du programme gdb, un puissant outil en ligne de commande standard sous Linux).

Un débogueur suit à la trace et dépiste l'exécution du programme ; il permet d'inspecter les informations voulues pour étudier son exécution.

### Mise en marche et arrêt

Le débogueur est toujours démarré avec un programme chargé. Il y a deux manières de procéder :

- Lancer un exécutable

- S'attacher à un processus

La plupart des fonctionnalités de Anjuta sont apportées à l'aide de greffons. Si vous ne pouvez pas voir les menus décrits ici, c'est probablement parce que le greffon Déboguer n'est pas chargé. Allez dans Édition PréférencesGénéralGreffons installés et vérifiez que le greffon Déboguer est chargé. Il s'agit d'un greffon activable par l'utilisateur, donc à charger ou décharger à la demande.

#### Lancer un exécutable

Le même menu permet de lancer un programme avec ou sans débogueur : choisissez Exécuter Exécuter pour lancer un programme sans le débogueur et Exécuter Déboguer le programme pour le lancer avec le débogueur.

Pour une utilisation optimale du débogueur, il est fortement recommandé de construire le programme avec les informations de débogage (-g pour gcc) et sans optimisation (-O0 pour gcc). À cet effet, sélectionnez la configuration débogage avant de construire le programme pour la première fois.

Pour choisir le programme à lancer et son environnement, servez-vous de Exécuter Paramètres du programme…. Vous pourrez alors sélectionner :

- le nom du programme que vous souhaitez déboguer,

  Le menu déroulant de la boîte combinée pour la cible est pré-remplie avec tous les exécutables du projet en cours. Mais vous pouvez aussi choisir un autre exécutable ne faisant pas partie du projet. Le débogueur accepte également les exécutables libtool qui sont des scripts, incorporant de vrais exécutables, générés par libtool.

- les paramètres en ligne de commande,

- le répertoire de travail,

- les variables d'environnement,

  Les variables d'environnement affichées en gris clair sont les variables d'environnement actuelles. Vous pouvez ici ajouter, modifier ou supprimer des variables d'environnement.

  Pour déboguer Anjuta en utilisant Anjuta, vous pouvez utiliser un thème différent pour modifier l'apparence de l'instance en cours de débogage. Par exemple, vous pouvez ajouter « GTK2_RC_FILES=/usr/share/themes/Crux/gtk-2.0/gtkrc ».

- si le programme doit être lancé dans un terminal ou non. Si oui, le greffon Terminal de Anjuta doit être activé.

#### Attachement à un processus

Il est également possible d'attacher un processus en cours d'exécution et de le déboguer en choisissant l'élément de menu Exécuter Déboguer le processus…. Une liste de tous les processus en cours d'exécution dans le système apparaît.

##### Boîte de dialogue « Attacher au processus »

Boîte de dialogue « Attacher au processus »

Choisissez le processus à attacher et cliquez sur Valider pour lancer le débogueur. Il s'attachera au processus sélectionné et le stoppera.

Il n'est actuellement pas possible de charger l'information des symboles pour les processus attachés. Les symboles doivent être inclus dans le processus.

#### Arrêt du débogueur

Choisissez l'élément de menu Exécuter Arrêter le débogueur pour arrêter le débogueur. Le programme en cours de débogage est tué. Si le débogueur a été attaché à un processus en cours d'exécution, le débogueur se détache de celui-ci sans le tuer. Une boîte de confirmation apparaît si un programme est actuellement attaché ou lancé.

#### Ajout de répertoires source

Choisissez l'élément de menu Déboguer Ajouter des chemins de sources… pour afficher une boîte de dialogue permettant d'ajouter ou de supprimer des répertoires source.

La plupart des exécutables incluent les chemins complets des fichiers, donc définir les répertoires contenant les fichiers sources n'est normalement pas nécessaire. Mais certains exécutables n'incluent que les noms des fichiers sans les chemins ; dans ce cas, le débogueur recherche les fichiers sources dans tous les répertoires définis. L'ordre des répertoires peut être important si plusieurs fichiers possèdent le même nom, il est donc possible de le modifier en utilisant les boutons Monter et Descendre. La liste des répertoires est envoyée au débogueur au moment où il démarre. Si vous modifiez la liste, vous devez redémarrer le débogueur pour qu'il utilise la nouvelle liste.

### Exécution

Il est possible de contrôler très finement l'exécution d'un programme dans le débogueur. Le programme peut être exécuté pas à pas ou autorisé à continuer jusqu'à ce qu'il rencontre un point d'arrêt. Pouvoir exécuter de cette manière est essentiel pour le comportement du programme de dépistage. Tout comme lors d'une session d'édition de vidéo, le programme peut être exécuté au ralenti avec la possibilité d'avancer, pauser, s'arrêter, etc. Vous ne pouvez toutefois pas reculer.

Les méthodes utilisables pour l'exécution d'un programme dans le débogueur sont décrites dans les paragraphes suivants. Ces commandes ne sont disponibles que lorsque le programme a déjà été lancé.

#### Pas à pas (en entrant)

Choisissez l'élément de menu Déboguer Pas en avant ou cliquez sur l'icône Pas en avant dans la barre d'outils du débogueur pour avancer d'un pas dans le programme.

Le pas à pas exécute uniquement une instruction du programme (celle où le programme a été interrompu) puis rend le contrôle au débogueur. Si l'instruction qui est exécutée appelle une ou plusieurs fonctions, le débogueur essaie de poursuivre son pas à pas dans les fonctions (dans l'ordre où elles sont exécutées). Une fois l'instruction exécutée et la main rendue, vous pouvez étudier l'état de votre programme.

Si la fenêtre Désassemblage possède le focus lorsque cette commande est sélectionnée, une seule instruction assembleur est exécutée.

#### Pas à pas (en sautant)

Choisissez l'élément de menu Déboguer Avancer en sautant ou cliquez sur l'icône Avancer en sautant dans la barre d'outils du débogueur pour avancer en sautant des instructions dans le programme.

Avancer en sautant est similaire à Pas en avant, mis à part le fait que le débogueur ne chemine pas à l'intérieur des fonctions appelées par l'instruction en cours d'exécution. L'instruction est exécutée globalement d'une seule traite.

Si la fenêtre désassemblage possède le focus lorsque cette commande est sélectionnée, une seule instruction assembleur est exécutée, mais, si cette instruction est un appel de sous-programme, aucun arrêt n'est effectué à l'intérieur de ce dernier.

Si une librairie dynamique est chargée lors du pas, le programme ne s'arrête pas une fois le pas effectué. Le programme continue de s'exécuter jusqu'à ce qu'il rencontre un point d'arrêt ou que vous l'interrompiez.

#### Pas à pas (en sortant)

Choisissez l'élément de menu Déboguer Avancer pour sortir ou cliquez sur l'icône Avancer pour sortir dans la barre d'outils du débogueur pour sortir de la fonction en cours du programme.

Avancer pour sortir exécute la fonction en cours jusqu'à son instruction de retour. Le programme s'arrête une fois sorti de la fonction. Avancer pour sortir n'est pas à proprement parler un pas à pas puisqu'il n'y a pas qu'une seule instruction qui soit exécutée — toutes les instructions de la fonction sont exécutées jusqu'au retour dans la fonction appelante.

#### Exécution/Continuation

Choisissez l'élément de menu Déboguer Exécuter/Continuer ou cliquez sur l'icône Exécuter/Continuer dans la barre d'outils du débogueur pour poursuivre l'exécution du programme.

Cette option continue l'exécution du programme jusqu'à ce qu'un point d'arrêt soit atteint ou que le programme se termine.

#### Exécution jusqu'à

Choisissez l'élément de menu Déboguer Exécuter jusqu'au curseur ou cliquez sur l'icône Exécuter jusqu'au curseur dans la barre d'outils du débogueur pour exécuter le programme jusqu'à atteindre la ligne contenant le curseur.

Cette option continue l'exécution du programme jusqu'à ce que la ligne ou l'adresse (si la fenêtre Désassemblage a le focus) marquée par le curseur soit atteinte.

#### Arrêt du programme

Lorsque le programme est en cours d'exécution et possède le contrôle, aucune tâche de débogage ne peut être réalisée. Pour obtenir le contrôle pendant que le programme tourne, choisissez l'élément de menu Déboguer Suspendre le programme ou cliquez sur l'icône Suspendre le programme dans la barre d'outils du débogueur. Le programme est interrompu et la main rendue au débogueur.

### Points d'arrêt

Au cours du débogage d'un programme, il est utile d'avoir la possibilité d'en interrompre l'exécution à un point donné afin de pouvoir en examiner l'état à cet instant. Les points d'arrêt permettent la réalisation d'une telle opération. Vous les disposerez à l'aplomb de diverses instructions dans le fichier source avant de lancer le programme. Lorsqu'un point d'arrêt est rencontré, l'exécution du programme est suspendue, permettant l'évaluation d'expressions, l'inspection de variables, l'étude du traçage de la pile, etc.

#### Liste des points d'arrêt

La fenêtre Liste des points d'arrêt s'ouvre en choisissant Affichage Points d'arrêt

##### Fenêtre de la liste des points d'arrêt

Fenêtre de la liste des points d'arrêt

Cette fenêtre comporte les colonnes suivantes :

Emplacement

  C'est la position du point d'arrêt dans le fichier source. Lorsqu'il a été défini à l'aide du débogueur, vous obtiendrez des informations supplémentaires comme le nom de la fonction contenant le point d'arrêt.

Adresse

  Ce champ indique l'adresse mémoire du point d'arrêt lorsqu'il a été défini à l'aide du débogueur.

Type

  Cette zone affiche toujours « breakpoint ». Elle sera utilisée dans une version future pour la prise en charge de différentes sortes de points d'arrêt.

Condition

  C'est la condition du point d'arrêt. Ce champ reste vide si aucune condition n'a été définie.

Nombre de passages

  Lorsque le débogueur n'est pas en fonctionnement, cette colonne indique le nombre de passages sur le point d'arrêt ou zéro si ce nombre n'a pas été défini.

  Lorsque le débogueur est en fonctionnement, si le nombre de passages est défini égal à zéro dans les propriétés du point d'arrêt, cette colonne affichera le nombre de fois où ce point d'arrêt a été actif. Si le nombre de passages n'a pas été défini égal à zéro, les deux nombres sont affichés. Le nombre de passages est le deuxième nombre.

État

  C'est l'état du point d'arrêt. Il peut être :

  - Suspendu : le point d'arrêt n'est pas actif dans le programme.

  - Permanent : le point d'arrêt est actif (son numéro d'identification est fourni entre parenthèses).

  - Temporaire : le point d'arrêt est activé mais il sera supprimé après avoir été atteint.

Au cours d'une session Anjuta, tous les points d'arrêts sont conservés même s'ils correspondent à un emplacement non-existant. Dans ce cas, leur état est défini à « suspendu ». L'interface essaye de les définir chaque fois que le programme est démarré ou qu'une nouvelle bibliothèque dynamique est chargée.

#### Ajout ou réglage de points d'arrêt

Choisissez l'élément de menu Déboguer Ajouter un point d'arrêt… ou Ajouter un point d'arrêt… dans le menu contextuel dans la liste des points d'arrêt pour ouvrir la boîte de dialogue Propriétés des points d'arrêt.

##### Boîte de dialogue « Propriétés des points d'arrêt »

Boîte de dialogue « Propriétés des points d'arrêt »

Saisissez l'emplacement et, éventuellement, la condition d'arrêt et le nombre de passages, puis cliquez sur Valider pour définir le point d'arrêt.

Emplacement

  Saisissez l'emplacement où le point d'arrêt doit être placé. Vous utiliserez un des formats ci-après pour le préciser :

  1. Nom_du_fichier:Numéro_ligne

  2. Nom_de_la_fonction

  3. Fichier:Nom_de_la_fonction

  Le premier format est évident — l'emplacement se réfère au numéro de ligne Numéro_ligne du fichier source Nom_du_fichier. Le second format se réfère à la première ligne de la fonction Nom_de_la_fonction. Le troisième format est identique au second, mais vous devez utiliser cette notation s'il y a plus d'une fonction portant le nom Nom_de_la_fonction dans le programme. On les distingue en fournissant le Nom_du_fichier, ainsi la notation fait référence à la fonction Nom_de_la_fonction du fichier Fichier.

Condition

  Le paramètre Condition affiche une expression associée qui doit renvoyer une valeur booléenne — l'évaluation de l'expression doit donner comme résultat TRUE (1) ou FALSE (0). Si le résultat de l'évaluation donne une valeur non booléenne, elle sera alors forcée en type booléen comme il se doit.

  Chaque fois qu'un point d'arrêt est rencontré pendant l'exécution du programme, la condition d'arrêt est évaluée. Le débogueur stoppe l'exécution seulement si le résultat de l'évaluation donne VRAI sinon il continue l'exécution comme s'il n'y avait pas de point d'arrêt.

  Si ce champ est vide, la valeur par défaut de Condition est VRAI. Le débogueur suspendra toujours l'exécution à l'emplacement du point d'arrêt.

Nombre de passages

  Le nombre de passages est une valeur entière (non signée) qui indique au débogueur le nombre de fois où il doit ignorer le point d'arrêt avant de le prendre en considération. Le nombre de passages possède une priorité supérieure à la condition d'arrêt. Ce n'est qu'une fois le nombre de passages atteint que le débogueur évaluera la condition d'arrêt (si elle existe). S'il n'y en a pas, le débogueur interrompt l'exécution dès que le nombre de passages a été atteint.

  Si ce champ est vide, la valeur par défaut du nombre de passages est zéro. Le point d'arrêt sera pris en compte dès la première fois où il sera atteint.

Un point d'arrêt peut également être défini en sélectionnant une ligne dans l'éditeur et en choisissant l'élément Déboguer Basculer le point d'arrêt dans le menu contextuel de l'éditeur ou en cliquant sur l'icône Basculer le point d'arrêt dans la barre d'outils du débogueur.

Des points d'arrêts peuvent être ajoutés même si le débogueur n'est pas lancé, de même que dans une bibliothèque dynamique non encore chargée. Mais ils ne peuvent pas être ajoutés pendant qu'un programme tourne sous le contrôle du débogueur.

#### Modification des points d'arrêt

Vous pouvez modifier la condition et le nombre de passage en sélectionnant le point d'arrêt dans la liste et en cliquant sur Modifier le point d'arrêt dans le menu contextuel.

Modifiez les entrées selon vos souhaits et cliquez sur Valider pour confirmer les modifications.

#### Suppression des points d'arrêt

Sélectionnez le point d'arrêt dans la fenêtre de la liste et cliquez sur Enlever le point d'arrêt pour le supprimer.

Un point d'arrêt existant peut également être supprimé en sélectionnant la ligne dans l'éditeur et en choisissant l'élément Déboguer Basculer le point d'arrêt dans le menu principal, l'élément Basculer le point d'arrêt dans le menu contextuel de l'éditeur ou en cliquant sur l'icône Basculer le point d'arrêt dans la barre d'outils du débogueur.

Vous pouvez supprimer tous les points d'arrêt en cliquant sur Déboguer Enlever tous les points d'arrêt ou sur Enlever tous les points d'arrêt dans le menu contextuel de la liste des points d'arrêt.

#### Activation ou désactivation des points d'arrêt

Cliquez sur la case à cocher de la colonne « Activé » de la fenêtre Points d'arrêt ou sur l'élément Activer le point d'arrêt du menu contextuel pour activer ou désactiver le point d'arrêt sélectionné. Le point d'arrêt basculera entre activé ou désactivé selon son état actuel.

Pour désactiver tous les points d'arrêt, cliquez, soit sur Déboguer Désactiver tous les points d'arrêt, soit sur Désactiver tous les points d'arrêt dans le menu contextuel de leur liste.

### Expressions

#### Liste des variables locales

Lorsqu'un programme tourne sous le contrôle du débogueur, vous ouvrez la fenêtre des variables Locales en cochant Affichage Variables locales dans le menu.

Les variables locales du cadre courant (i.e. la fonction actuellement sous contrôle du programme) sont affichées dans la fenêtre Locales. Pendant l'exécution du programme (par ex. pendant un pas à pas) les variables locales seront mises à jour. Si la valeur d'une des variables a changé depuis le précédent pas de débogage, sa valeur est mise en surbrillance en rouge. Les variables sont affichées sous forme arborescente pour une meilleure présentation.

##### Variables locales

Variables locales

La valeur d'une variable locale peut être modifiée en la sélectionnant et en cliquant dans la colonne Valeur.

gdb est de plus en plus souvent utilisé comme moteur de l'interface graphique. Il a récemment été amélioré dans ce domaine. Il est recommandé d'utiliser la dernière version (6.6) de gdb. Avec les versions antérieures, gdb peut s'arrêter brutalement lorsque l'interface interroge un pointeur de valeur incorrecte (mais inutilisée).

#### Liste des expressions inspectées

L'inspection ou l'évaluation d'une expression ne donne le résultat qu'une seule fois. Pour contrôler de manière continue des variables ou des expressions, utilisez Variables inspectées.

Choisissez l'élément de menu Affichage Variables inspectées pour afficher la fenêtre Variables inspectées.

#### Ajout d'une expression à inspecter

Faites un clic droit sur la fenêtre Variables inspectées pour ouvrir le menu contextuel. Choisissez l'élément Ajouter à l'inspecteur…. Vous avez aussi l'alternative d'utiliser l'élément de menu Déboguer Ajouter à l'inspecteur…. Une boîte de dialogue vous invitant à saisir l'expression apparaît. L'opération effectuée, cliquez sur Ajouter.

Par défaut, les expressions inspectées sont mises à jour automatiquement chaque fois que le programme s'arrête. Ce comportement peut être modifié dans la boîte de dialogue « Ajouter à l'inspecteur » ou bien ultérieurement en décochant Mise à jour automatique dans la fenêtre Variables inspectées ouverte avec le menu contextuel. Une expression inspectée peut être mise à jour à la demande en choisissant Mettre à jour l'inspecteur ou Tout mettre à jour dans le menu contextuel.

Il n'est pas nécessaire que le débogueur soit lancé pour ajouter une nouvelle expression à inspecter. Si le débogueur n'est pas lancé ou si l'expression correspondante ne peut pas être trouvée, l'interface essayera de créer l'expression à inspecter chaque fois que le programme est stoppé.

#### Suppression d'une expression à inspecter

Faites un clic droit sur l'expression inspectée que vous souhaitez supprimer dans la fenêtre Variables inspectées, puis choisissez l'élément Supprimer dans le menu contextuel.

L'ensemble des variables inspectées peut être supprimé d'un coup en choisissant Tout supprimer dans le menu contextuel de la fenêtre Variables inspectées.

#### Évaluation des expressions

Lorsque le contrôle est rendu par le programme — peut-être sur un point d'arrêt — il est possible d'évaluer les expressions ou d'inspecter les valeurs des variables du programme. Choisissez, soit l'élément de menu Déboguer Inspecter/Évaluer…, soit Inspecter/Évaluer… dans le menu contextuel de l'éditeur,soit encore cliquez sur le bouton Inspecter dans la barre d'outils du débogueur.

Une fenêtre apparaît affichant l'évaluation de l'expression en évidence dans l'éditeur. Vous pouvez évaluer une nouvelle expression en cliquant sur la colonne Variable et en y saisissant l'expression.

Vous pouvez ajouter directement cette expression à la liste des expressions inspectées en cliquant sur le bouton Ajouter.

#### Inspection d'expressions dans la fenêtre de l'éditeur

Lorsque le débogueur est actif et le programme stoppé, vous pouvez obtenir la valeur d'une expression simplement en plaçant le pointeur de souris à son aplomb et en restant immobile un court instant. Si l'expression est déjà présente dans la fenêtre Locales ou Variables inspectées, sa valeur est affichée dans une infobulle.

Cette possibilité ne fonctionne actuellement que pour les variables simples, pas pour les structures ou les tableaux.

### Trace de la pile

#### Fenêtre de la pile

La fenêtre Pile affiche le contenu de la pile du programme. Elle donne la liste de toutes les fonctions et leurs paramètres dans l'ordre d'appel. Chaque appel est également représenté par un nombre appelé cadre. Chaque appel dans la trace est situé dans un cadre différent. La numérotation commence par le cadre 0 (la dernière fonction appelée) et croît au fur et à mesure que l'imbrication des appels de fonctions devient profond.

Choisissez l'élément de menu Affichage Pile pour ouvrir la trace de la pile du programme en cours de débogage.

##### Fenêtre « Pile »

Fenêtre « Pile »

Un petite flèche pointe vers le cadre actuellement sélectionné dans la trace de la pile. Par défaut, c'est le cadre 0, la dernière fonction appelée. Toutes les évaluations et inspections d'expressions ou de variables se font en référence au cadre sélectionné. La portée des variables ou expressions en cours d'évaluation est limitée à ce seul cadre sélectionné. Il en est de même uniquement pour les nouvelles expressions dans l'inspecteur.

#### Définition du cadre actuel

Un double-clic sur un cadre dans la trace de la pile le définit comme étant actuellement sélectionné. La flèche pointera vers ce dernier, indiquant qu'il a été sélectionné en tant que cadre courant. Vous pouvez opérer autrement : ouvrez le menu contextuel par un clic droit dans la fenêtre Pile et choisissez l'élément de menu Définir le cadre actuel pour le définir.

Changer le cadre de la pile entraîne un changement du contenu de la fenêtre Locales, mais pas de la fenêtre Variables inspectées, car chaque expression est évaluée dans le cadre utilisé au moment de sa définition.

### Thread

#### Fenêtre des thread

La fenêtre Thread affiche tous les threads utilisés par le programme et indique le thread actuel. Choisissez l'élément de menu Affichage Thread pour ouvrir cette fenêtre.

Un petite flèche pointe vers le thread en cours. Lorsque le programme est stoppé, le thread pointé est le thread dont l'exécution est interrompue. Chaque thread possède son propre cadre de pile, donc changer le thread en cours changera également le cadre de pile actuel.

#### Paramétrage du thread en cours

Un double-clic sur un thread dans la liste des threads le définit comme étant actuellement sélectionné. La flèche pointera vers ce dernier, indiquant qu'il a été sélectionné en tant que thread courant. Vous pouvez opérer autrement : ouvrez le menu contextuel par un clic droit dans la fenêtre Thread et choisissez l'élément de menu Définir le thread actuel pour le définir.

Changer de thread entraîne un changement des valeurs dans les registres CPU ainsi que celui du cadre de pile courant, donc la fenêtre Locales sera également modifiée.

### Processeur

#### Fenêtre des registres

Il est possible d'examiner le contenu des registres internes du CPU (microprocesseur). Choisissez l'élément de menu Affichage Registres. Une fenêtre apparaît, affichant la liste de tous les registres disponibles du microprocesseur avec leur contenu respectif.

Si une valeur de registre a été modifiée depuis le précédent pas de débogage, sa valeur est mise en surbrillance en rouge. Il est possible de modifier une valeur de registre en le sélectionnant et en cliquant dans la colonne Valeur.

#### Fenêtre mémoire

Choisissez l'élément de menu Affichage Mémoire pour ouvrir la fenêtre Mémoire du programme en cours de débogage. Cette fenêtre affiche le contenu de toute la mémoire.

La première colonne affiche les adresses mémoires en hexadécimal, la seconde octet par octet le contenu de la mémoire en hexadécimal et la dernière le même contenu en ASCII.

L'espace d'adressage d'un simple microprocesseur 32-bits est déjà assez grand (4 gigaoctets), il vous sera donc très difficile de vous rendre à une adresse précise à l'aide de la barre de défilement. Mais, si vous cliquez avec le bouton droit de la souris pour afficher un menu contextuel et choisissez Aller à l'adresse, vous accédez à un petit contrôle d'édition dans lequel il vous est possible de saisir une adresse en notation hexadécimale.

#### Fenêtre « Désassemblage »

Choisissez l'élément de menu Affichage Désassemblage pour ouvrir la fenêtre Désassemblage du programme en cours de débogage.

La première colonne affiche les adresses en hexadécimal. Dans la seconde colonne, vous avez, soit une étiquette affichée dès le début de la ligne et terminée par deux points, soit une instruction en langage d'assemblage indentée de 4 espaces.

À nouveau, comme l'espace d'adressage est très grand, la barre de défilement est inutilisable. Cliquez avec le bouton droit de la souris pour afficher un menu contextuel et choisissez Aller à l'adresse. Vous obtenez un petit contrôle d'édition dans lequel il vous est possible de saisir une adresse en notation hexadécimale. Lorsque le programme s'arrête, l'index dans la fenêtre de désassemblage se déplace pour pointer sur la position du compteur du programme.

### Autres

Il existe quelques autres fonctionnalités de débogage, moins fréquemment utilisées et pas très bien intégrées dans l'interface, mais qui fonctionnent néanmoins.

#### Bibliothèques chargées de manière dynamique

Pour obtenir une liste des bibliothèques dynamiques utilisées par un programme, choisissez l'élément de menu DéboguerInformations Bibliothèques partagées. Une fenêtre affiche alors la liste de toutes les bibliothèques partagées que le programme a chargées ainsi que leur emplacement dans la mémoire. Elle indique également si la table des symboles de la bibliothèque a été chargée ou pas (Oui/Non).

##### Fenêtre « Bibliothèques partagées »

Fenêtre « Bibliothèques partagées »

#### Signaux du noyau

Les signaux du noyau sont un moyen d'échanger des informations entre processus sous Linux. La liste des signaux disponibles pour un programme s'affiche en choisissant l'élément de menu DéboguerInformations Signaux du noyau. Une fenêtre apparaît contenant la liste de tous les signaux disponibles dans le système accompagnés d'une courte description pour chacun.

##### Fenêtre « Signaux du noyau »

Fenêtre « Signaux du noyau »

Il y a trois colonnes qui indiquent quoi faire lorsqu'un signal est reçu :

1. Arrête — qui indique au débogueur d'arrêter l'exécution du programme (et de rendre le contrôle) lorsque le programme reçoit ce signal.

2. Affiche — qui indique au débogueur d'afficher le signal reçu.

3. Transmet — qui indique au débogueur de transmettre le signal au programme.

Le menu contextuel affiché lorsque vous cliquez avec le bouton droit de la souris n'a que des éléments inactifs car les fonctions correspondantes ne sont pas encore implémentées.

#### Informations sur les fichiers utilisés

Vous pouvez obtenir de l'information sur les fichiers utilisés par le programme en cours de débogage en choisissant l'élément de menu DéboguerInformations Fichiers cibles. Une fenêtre s'ouvre pour afficher ces informations.

#### Informations sur le programme débogué

Vous pouvez obtenir de l'information sur le programme en cours de débogage en choisissant l'élément de menu DéboguerInformations Programme. Une fenêtre s'ouvre pour afficher ces informations.

#### Informations sur la structure du noyau

Vous pouvez obtenir de l'information sur les données noyau pour le processus en cours en choisissant l'élément de menu DéboguerInformations Informations sur la « structure utilisateur » du noyau. Une fenêtre s'ouvre pour afficher ces informations.

#### Informations sur les variables globales

Vous pouvez obtenir la liste de toutes les variables globales en choisissant l'élément de menu DéboguerInformations Informations sur les variables globales. Une fenêtre s'ouvre pour afficher ces informations.

#### Informations sur le cadre actuel

Vous pouvez obtenir des informations sur le cadre actuellement sélectionné en choisissant l'élément de menu DéboguerInformations Informations sur le cadre actuel. Une fenêtre s'ouvre pour afficher ces informations.

#### Informations sur les paramètres de la fonction actuelle

Vous pouvez obtenir des informations sur les paramètres de la fonction actuelle en choisissant l'élément de menu DéboguerInformations Informations sur les paramètres de la fonction. Une fenêtre s'ouvre pour afficher ces informations.

#### Commande utilisateur

Pour envoyer une commande directement au moteur de débogage, choisissez l'élément de menu Déboguer Commande du débogueur. Une petite boîte de dialogue apparaît dans laquelle vous pouvez saisir des commandes qui sont envoyées au débogueur lorsque vous pressez Entrée.

L'interface envoie cette commande directement au moteur sans effectuer aucun contrôle. Par exemple, si vous définissez un point d'arrêt de cette façon, il n'apparaît pas dans la fenêtre Points d'arrêt. Il vaut mieux éviter d'utiliser cette commande à moins que vous ne sachiez exactement ce que vous faites.

## Concepteur d'interface Glade

### Démarrage rapide

Si vous ne voulez pas lire tout cet ennuyeux manuel, voici quelques étapes pour être totalement prêts à utiliser Glade :

1. Le projet doit contenir des fichiers Glade ouverts.

2. Contrairement au concepteur d'interface original Glade, le greffon Anjuta utilise le double-clic pour créer les gestionnaires du signal par défaut. Vous pouvez cliquer sur les composants graphiques (par ex. changer l'onglet actuel dans un GtkNotebook) en gardant pressée la touche « Windows » ou « Super ».

3. Ouvrez PréférencesConcepteur de GUI Glade et cochez les trois options du haut Insérer un gestionnaire à l'édition, Agencement de conception séparé et Ajouter automatiquement les ressources.

4. Cochez AffichageConcepteur et mettez cette fenêtre à un meilleur emplacement.

5. Activez le fichier Glade dans la zone de conception et le fichier du code source devant contenir les signaux d'appel du fichier Glade, puis faites GladeAssocier le dernier concepteur et le dernier éditeur.

6. Éventuellement, choisissez une cible pour les images ou autres ressources dans le gestionnaire de projet et sélectionnez Définir comme cible de ressource par défaut dans le menu contextuel.

### Généralités sur l'utilisation de Glade

Le greffon Glade retranscrit presque totalement les fonctionnalités du concepteur d'interface Glade autonome, mais il y a quelques particularités. Les quatre fenêtres du concepteur Glade sont la zone de conception, la palette, l'inspecteur des composants graphiques et l'éditeur de propriétés. Ils ont la même fonction que dans le concepteur Glade autonome : veuillez donc consulter le Manuel du concepteur d'interface Glade pour leur description. Une fonctionnalité supplémentaire permettant d'utiliser plus efficacement l'infrastructure de Anjuta est décrite ici.

### Association éditeur et concepteur

Vous pouvez associer l'éditeur de texte et le concepteur Glade : l'association permet d'aller alternativement de l'un à l'autre et d'insérer automatiquement des ébauches pour les nouveaux gestionnaires ajoutés. Il est possible d'associer plus d'un éditeur à un même concepteur. Sera utilisé le dernier éditeur activé ou celui associé au composant graphique actuellement au plus haut niveau. Il y a deux manières d'associer éditeur et concepteur. La première consiste à utiliser la « Boîte de dialogue des associations » ; la seconde à choisir le concepteur et le document de l'éditeur dans n'importe quel ordre, puis de sélectionner l'élément de menu GladeAssocier le dernier concepteur et le dernier éditeur.

### Boîte de dialogue des associations

Elle vous permet de créer et de gérer les associations. Pour créer une association, choisissez un concepteur et un éditeur dans les boîtes combinées et cliquez sur Associer. Vous pouvez également sélectionner le document en l'activant dans le gestionnaire de documents ou dans la liste des fenêtres du menu principal. La liste au centre de la boîte de dialogue affiche les associations existantes. En dessous, des contrôles servent à modifier les propriétés de l'association. Voici leur description :

Expression régulière spéciale

  Elle s'utilise pour définir une position personnalisée pour l'insertion des ébauches.

Nom du composant graphique

  Il indique le nom du composant graphique de plus haut niveau auquel se rapporte cette association.

Type de position

  Il décrit l'emplacement où l'ébauche de gestionnaire sera insérée. Après le « begin » signifie après la marque spéciale (qui peut être saisie dans le champ Expression régulière spéciale) et Avant le « end » qui signifie avant la marque de fin spéciale. La marque de début par défaut est /* nom_fenetre callbacks */ et la marque de fin par défaut est /* end of nom_fenetre callbacks */. Il est possible d'omettre nom_fenetre.

### Signal par défaut

Un double-clic sur un composant graphique dans la zone de conception crée un nouveau gestionnaire pour le signal par défaut en utilisant un modèle prédéfini pour sa dénomination. Par exemple, le signal par défaut est « clicked » pour un bouton, « toggled » pour une case à cocher, etc. Si l'option Insérer un gestionnaire à l'édition est activée alors la nouvelle ébauche de gestionnaire sera insérée à une position qui dépend du réglage de Type de position.

### Insertion d'une ébauche

L'un des résultats les plus remarquables de l'intégration de Anjuta et de Glade est la création automatique d'ébauches de gestionnaire ; cette création vous épargne beaucoup de travail de routine étant donné qu'elle se fait automatiquement.

Il y a plusieurs façons de créer une ébauche :

- automatiquement, si l'option Insérer un gestionnaire à l'édition est activée,

- en utilisant l'élément GladeInsérer une ébauche de gestionnaire (position auto) du menu principal,

- en utilisant l'élément Insérer une ébauche de gestionnaire du menu contextuel des documents texte.

### Préférences

Insérer un gestionnaire à l'édition

  Active l'insertion d'une ébauche de gestionnaire dans l'éditeur associé après avoir saisi un nouveau gestionnaire dans l'éditeur de signaux ou créé un gestionnaire de signal par défaut.

Agencement de conception séparé

  Détache la fenêtre de conception de l'interface hors du gestionnaire de document afin de pouvoir la disposer séparément de l'éditeur de texte.

Ajouter automatiquement les ressources

  Si la case est cochée, toutes les ressources (par ex. les images) sont ajoutées à la cible dans le projet actuel. Vous pouvez choisir la cible en utilisant le menu contextuel du gestionnaire de projet ou en saisissant l'identifiant de la cible dans le champ sous la case à cocher.

Modèle de gestionnaire

  Vous pouvez choisir là un des deux formats de dénomination automatique des gestionnaires de signaux.

## Préférences

Les préférences vous permettent de configurer Anjuta selon vos goûts. Choisissez Édition Préférences pour faire apparaître la boîte de dialogue des préférences. Quelques préférences sont explicités ci-après.

### Général

1. Le répertoire du projet est le chemin qui mène là où vous avez l'intention d'enregistrer tous vos projets. L'assistant Application créera les nouveaux projets uniquement dans ce répertoire. Le répertoire par défaut est ~/Projets, ce qui convient à la plupart des utilisateurs.

2. Informations utilisateur : indique votre nom et votre adresse électronique. Ces informations ne seront pas utilisées pour signer des dépôts de logiciels, mais plutôt pour créer les entrées du « ChangeLog » et autres insertions de texte.

### Gestionnaire de fichiers

1. Le Répertoire racine si aucun projet n'est ouvert indique le chemin vers lequel la racine du gestionnaire de fichiers pointe si aucun projet n'est en cours.

2. Filtre de fichiers : vous pouvez filtrer certains fichiers dans l'arborescence, par exemple, les fichiers cachés ou bien les fichiers ignorés par le système de contrôle de version étant donné qu'ils sont générés au moment de la construction et ne doivent pas être modifiés.

## Outils définis par l'utilisateur

### Introduction

Parfois vous trouverez que les fonctionnalités intégrées fournies par Anjuta sont insuffisantes. Dans ce cas, vous pourrez alors être tenté, soit d'ajouter la fonctionnalité vous-même dans le code de Anjuta, soit de déposer une requête pour que la fonctionnalité soit implémentée. Toutefois, l'une ou l'autre de ces approches sera, selon toute probabilité, lente et problématique, surtout si votre outil est spécialisé. En de telles circonstances, il est préférable d'utiliser à la place la structure des outils Anjuta.

Anjuta fournit, pour étendre ses fonctionnalités, une structure puissante de définition d'outils personnalisés. Les outils ont accès à presque toutes les fonctionnalités de l'EDI via l'utilisation des variables. Vous pouvez ajouter des outils à n'importe quel élément de menu, définir l'entrée, la sortie et la redirection des erreurs dans la structure GUI ainsi que fournir des paramètres en ligne de commande à l'outil.

Le greffon Outils doit être activé pour utiliser cette fonctionnalité !

### Exemples d'outils

Voici un exemple simple sur la façon d'utiliser le greffon Outils pour intégrer le script de génération du « ChangeLog » de GNOME.

#### L'éditeur d'outils

L'éditeur d'outils

## Auteurs

Le projet Anjuta a été créé par Naba Kumar. Cette page affiche tous les contributeurs à Anjuta.

Pour plus d'informations sur Anjuta, veuillez visiter le site Web du projet http://anjuta.org . Les rapports d'anomalies doivent être effectués en utilisant Bug Tracker vers le site de développement du projet http://www.sourceforge.net/projects/anjuta .

Ce manuel a été écrit par Naba Kumar, Andy Piper, Biswapesh Chattopadhyay et Johannes Schmid. Veuillez envoyer tous vos commentaires ou suggestions concernant ce manuel à la liste de discussion Anjuta Devel anjuta-devel-list@gnome.org. Les commentaires peuvent également être envoyés via « project trackers » sur SourceForge.

## Licence

Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le modifier selon les termes de la Licence Publique Générale GNU publiée par la Free Software Foundation ; soit la version 2 ou (à votre discrétion) toute autre version ultérieure.

Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même une garantie implicite de QUALITÉ LOYALE ET MARCHANDE ou DE CONFORMITÉ À UNE UTILISATION PARTICULIÈRE. Voir la Licence Publique Générale GNU pour plus de détails.

Une copie de la licence GNU General Public License est annexée au Guide des utilisateurs de GNOME. Vous pouvez obtenir une copie de la licence GNU General Public License de la Free Software Foundation en visitant leur site Web ou en écrivant à

     Free Software Foundation, Inc. 51 Franklin Street Fifth Floor Boston, MA02110-1301USA