Code::Blocks Manuel Utilisateur
Version 1.1

1Gestion de Projet CodeBlocks

Les instructions du Listing3 et du Listing4 sont les documentations officielles du site Wiki de CodeBlocks où elles ne sont disponibles qu弾n anglais.

Note:
Remarque du traducteur : Les références aux menus sont traduites en français. Cela suppose donc que vous avez installé la francisation de l段nterface de CodeBlocks que vous pouvez obtenir, notamment via le forum, dans la rubrique CodeBlocks Translation. Ne plus utiliser celle du site LaunchPad bien trop ancienne et largement dépassée. Les images ci-dessous sont celles de la documentation originale, en anglais

L段llustration ci-dessous montre l誕pparence de la fenêtre de l段nterface utilisateur de CodeBlocks.


pict

Figure1.1: Environnement de développement Intégré (IDE) de CodeBlocks

Gestion
Cette fenêtre contient l段nterface 単rojets qui dans le texte suivant sera référencée comme vue du projet. Cette vue affiche tous les projets ouverts dans CodeBlocks à un instant donné. L弛nglet 担ymboles de la fenêtre Gestion affiche les symboles, les variables etc.
Éditeur
Dans l段llustration ci-dessus, un fichier source nommé hello.c est ouvert avec colorisation de syntaxe dans léditeur.
Liste des fichiers ouverts
affiche une liste de tous les fichiers ouverts dans léditeur, dans cet exemple : hello.c.
CodeSnippets
peut être affiché via le menu 歎ue CodeSnippets . Ici vous pouvez gérer des modules de texte, des liens vers des fichiers et des liens vers des urls.
Journaux & autres
. Cette fenêtre est utilisée pour sortir des résultats de recherche, des messages envoyés par un compilateur etc..

La barre détat donne un aperçu des paramétrages suivants :

CodeBlocks offre une gestion des projets très flexible et très compréhensible. Le texte suivant ne montre que quelques aspects de la gestion de projets.

1.1Vue du projet

Dans CodeBlocks, les sources et les paramètres d置n processus de génération sont stockés dans un fichier projet <name>.cbp. Les sources en C/C++ et les fichiers d弾ntêtes correspondants (ou headers) sont les composants typiques d置n projet. La façon la plus simple de créer un projet est de passer par la commande 巽ichier Projet et de choisir un assistant. Vous pouvez alors ajouter des fichiers au projet via le menu de contexte 但jouter des fichiers de la fenêtre de gestion.

CodeBlocks gère les fichiers de projets en catégories qui dépendent de l弾xtension des fichiers. Les catégories suivantes sont prédéfinies :

Sources
contient les fichiers sources dont l弾xtension est *.c;*.cpp;.
ASM Sources
contient les fichiers sources dont l弾xtension est *.s;*.S;*.ss;*.asm.
Headers
contient, entre autres, les fichiers dont l弾xtension est *.h;.
Ressources
contient les fichiers pour paramétrer l誕spect des fenêtres des wxWidgets avec les extensions *.res;*.xrc;. Ces types de fichiers sont affichés dans l弛nglet 坦essources de la fenêtre de Gestion.

Les paramètres des types et catégories de fichiers peuvent être ajustés via le menu de contexte 但rbre des projets Editer les types et catégories de fichiers . Ici, vous pouvez définir aussi des catégories personnalisées pour les extensions de votre choix. Par exemple, si vous souhaitez lister des scripts dédition de liens avec l弾xtension *.ld dans une catégorie nommée Linkerscript, vous n誕vez quà créer une nouvelle catégorie.

Note:
Si vous désactivez 但rbre des projets Catégoriser par type de fichiers dans le menu de contexte, l誕ffichage par catégories sera masqué, et les fichiers seront listés comme ils sont stockés dans le système de fichiers.

1.2Notes pour les Projets

Dans CodeBlocks, ce qu弛n appelle des notes peuvent être stockées dans un projet. Ces notes peuvent contenir de brèves descriptions ou des points particuliers pour le projet correspondant. En affichant ces informations à l弛uverture d置n projet, les autres utilisateurs peuvent avoir un rapide aperçu de l誕vancement du projet. L誕ffichage des notes peut être validé ou invalidé via l弛nglet Notes des Propriétés d置n projet.

1.3Modèle de Projet

CodeBlocks est fourni avec tout un ensemble de modèles de projets qui sont affichés quand on crée un nouveau projet. Cependant, vous pouvez aussi enregistrer des modèles personnalisés pour y sauvegarder vos propres spécifications d弛ptions de compilation, les optimisations à utiliser, les options spécifiques aux machines etc. Ces modèles seront enregistrés dans le répertoire Documents and Settings\<user>\Application Data\codeblocks\UserTemplates. Si les modèles doivent pouvoir être ouverts par tous les utilisateurs, ils devront être copiés dans un répertoire correspondant de l段nstallation de CodeBlocks. Ces modèles seront alors affichés lors du démarrage suivant de CodeBlocks dans 誰ouveau Projet Modèles utilisateur .

Note:
Les modèles disponibles dans l誕ssistant Projet peuvent être édités en les sélectionnant via un clic droit.

1.4Créer des Projets à partir de Cibles de Génération

Dans les projets, il est nécessaire d誕voir à disposition différentes variantes de projets. On appelle ces variantes Cibles de Génération. Elles diffèrent par leurs options de compilation, les informations de débogage et/ou le choix des fichiers. Une cible de génération peut aussi être externalisée dans un projet séparé. Pour ce faire, cliquer sur 単rojet Propriétés puis sélectionner la variante dans l弛nglet 竪énérer les cibles et cliquer sur le bouton 辰réer un projet à partir d置ne cible (voir Figure1.2).


pict

Figure1.2: Cibles de Génération

1.5Cibles Virtuelles

Les projets peuvent être également structurés dans CodeBlocks en ce qu弛n appelle des cibles virtuelles. Une structure fréquemment utilisée de projet consiste en deux cibles de génération, la première cible 奪ebug qui contient des informations pour le débogage et la seconde cible 坦elease sans ces informations. En ajoutant Cibles Virtuelles via 単rojet 単ropriétés 辰ibles de génération on peut combiner des cibles de génération individuelles. Par exemple, une Cible Virtuelle 但ll peut créer les cibles Debug et Release simultanément. Les cibles virtuelles sont affichées dans la barre de symboles du compilateur dans Générer les cibles.

1.6Étapes Pré- et Post Génération

Dans CodeBlocks on peut effectuer des opérations complémentaires avant et après la compilation d置n projet. Ces opérations sont appelées étapes de Pré génération ou Post génération. Des Post générations typiques sont :

Exemple

Créer le désassemblage d置n objet sous Windows. Le transfert vers un fichier nécessite l誕ppel à cmd avec l弛ption /c.

cmd/cobjdump-Dname.elf>name.dis

Un autre exemple de Post génération peut être l誕rchivage d置n projet. Pour cela, créez une cible de génération 但rchive et incluez les instructions suivantes dans létape de post génération :

zip-j9$(PROJECT_NAME)_$(TODAY).zipsrchobj$(PROJECT_NAME).cbp

Avec cette commande, le projet actif et ses sources, entêtes et objets seront compressés en tant que fichier zip. En faisant ainsi, les variables intégrées $(PROJECT_NAME) et $(TODAY), le nom du projet et la date courante seront extraites (voir Listing3.2). Après l弾xécution de la cible 但rchive, le fichier compressé sera stocké dans le répertoire du projet.

Dans le répertoire share/codeblocks/scripts vous trouverez quelques exemples de scripts. Vous pouvez ajouter un script via le menu 単aramètres 脱dition de scripts et l弾nregistrer dans un menu. Si vous exécutez par exemple le script make_dist depuis le menu, alors tous les fichiers appartenant à un projet seront compressés dans une archive <project>.tar.gz.

1.7Ajouter des Scripts à des Cibles de Génération

CodeBlocks offre la possibilité d置tiliser des actions de menus dans les scripts. Le script représente un autre degré de liberté pour contrôler la génération de votre projet.

Note:
Un script peut également être inclus dans une Cible de Génération.

1.8Espace de travail et Dépendances de Projet

Des projets multiples peuvent être ouverts dans CodeBlocks. En enregistrant les projets ouverts via 巽ichier 脱nregistrer l弾space de travail vous pouvez les rassembler dans un seul espace de travail sous <name>.workspace. Si vous ouvrez <name>.workspace au démarrage suivant de CodeBlocks, tous les projets seront de nouveau affichés.

Les logiciels complexes sont un assemblage de composants qui sont gérés dans différents projets CodeBlocks. De plus, lors de la génération de tels logiciels, il y a souvent des dépendances entre ces projets.

Exemple

Un projet A contient des fonctions de base qui sont rendues disponibles aux autres projets sous forme d置ne librairie. Maintenant, si les sources de ce projet sont modifiées, alors la librairie doit être re-générée. Afin de maintenir la consistance entre un projet B qui utilise ces fonctions et le projet A qui les implémente, le projet B doit dépendre du projet A. Les informations nécessaires aux dépendances des projets sont enregistrées dans l弾space de travail adéquat, ainsi chaque projet peut être généré séparément. L置tilisation des dépendances rend également possible le contrôle de l弛rdre dans lequel sont générés les projets. Les dépendances de projets peuvent être configurées en sélectionnant le menu 単rojet 単ropriétés puis en cliquant sur le bouton 奪épendances du projet.

1.9Inclure des Fichiers en Assembleur

Dans la fenêtre Gestion d置ne vue de projet, les fichiers en Assembleur sont affichés dans la catégorie ASM Sources. L置tilisateur peut changer la liste des fichiers dans les catégories (voir 1.1). Un clic droit sur un des fichiers assembleur listés ouvrira un menu de contexte. Sélectionner 単ropriétés pour ouvrir une nouvelle fenêtre. Sélectionnez maintenant l弛nglet 竪énérer et activez les deux champs 辰ompiler le fichier and Édition de liens du fichier. Sélectionnez ensuite l弛nglet 但vancé et exécutez les étapes suivantes :

  1. Configurer 歎ariable de compilation à CC
  2. Sélectionner le compilateur dans 単our ce compilateur
  3. Sélectionner 旦tiliser des commandes personnalisées pour générer ce fichier
  4. Dans la fenêtre, entrez :
    $compiler$options$includes<asopts>-c$file-o$object

Les variables de CodeBlocks sont identifiées par un $ (voir Listing3.4). Elles sont automatiquement configurées, ainsi vous n誕vez à remplacer que l弛ption de l誕ssembleur <asopt> par vos propres configurations.

1.10Éditeur et Outils

1.10.1Code par Défaut

Les règles de codage dans une compagnie imposent d誕voir un modèle standard. Avec CodeBlocks, il est possible d段nclure un contenu prédéfini automatiquement en début de fichier lors de la créations d置ne nouvelle source C/C++ ou d弾ntêtes (headers). Le contenu prédéfini est dénommé code par défaut. Cette configuration peut être sélectionnée dans 単aramètres Éditeur Code par Défaut. Si vous créez un nouveau fichier alors une expansion des variables macro, notamment celles de 単aramètres 歎ariables Globales , est effectuée. Un nouveau fichier peut être créé via le menu 巽ichier 誰ouveau 巽ichier .

Exemple

/⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆
Project:$(project)
Function:
⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆
$Author:mario$
$Name:$
⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆

Copyright2007bycompanyname

⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆/

1.10.2Abréviations

Pas mal de frappes au clavier peuvent être économisées dans CodeBlocks en définissant des abréviations. Ceci peut s弛btenir en sélectionnant 単aramètres Éditeur et en définissant les abréviations par un nom <name>, qui peut alors être appelé par un raccourci clavier Ctrl-J (voir Figure1.3).


pict

Figure1.3: Définition des abréviations

On peut également les paramétrer en incluant des variables $(NAME) dans les abréviations.

#ifndef$(Guardtoken)
#define$(Guardtoken)
#endif//$(Guardtoken)

Quand on utilise l誕bréviation <name> dans un texte source et qu弛n utilise Ctrl-J, le contenu de la variable est récupéré puis inclus.

1.10.3Personnalités

Les configurations de CodeBlocks sont enregistrées en tant que données d誕pplication dans un fichier dénommé <user>.conf dans le répertoire de codeblocks. Ce fichier de configuration contient des informations telles que les derniers projets ouverts, le paramétrage de léditeur, l誕ffichage des barres de symboles etc. Par défaut, la personnalité 壇efault est utilisée et sa configuration sauvegardée dans un fichier default.conf. Si CodeBlocks est lancé en ligne de commande avec le paramètre --personality=myuser, le paramétrage sera enregistré dans un fichier myuser.conf. Si le profil n弾xiste pas déjà, il sera automatiquement créé. Cette procédure rend possible la création de différents profils pour différentes étapes de travail. Si vous lancez CodeBlocks en ligne de commande avec le paramètre additionnel --personality=ask, une boîte de sélection sera affichée avec tous les profils disponibles.

Note:
Le nom du profil/personnalité courant est affiché dans le coin à droite de la barre détat.

1.10.4Fichiers de Configuration

Les paramètres de CodeBlocks sont enregistrés dans le fichier de profil default.conf dans le répertoire codeblocks de votre Application Data. Quand vous utilisez des personnalités (ou profils) (voir Listing1.10.3), les détails de configuration sont enregistrés dans un fichier <personality>.conf.

L弛util cb_share_conf, qu弛n trouve dans le répertoire d段nstallation de CodeBlocks, est utilisé pour gérer et enregistrer ces paramétrages.

Si vous souhaitez définir des paramètres standard pour plusieurs utilisateurs de l弛rdinateur, le fichier de configuration default.conf doit être enregistré dans le répertoire \Documents and Settings\Default User\Application Data\codeblocks. Lors du premier démarrage, CodeBlocks copiera les valeurs par défaut depuis 奪efault User vers le répertoire 尿pplication data de l置tilisateur courant.

Pour créer une version portable de CodeBlocks sur clé USB, procédez comme suit. Copiez le répertoire d段nstallation de CodeBlocks vers la clé USB et stockez le fichier de configuration default.conf dans ce répertoire. Cette configuration servira de paramétrage global. Faites attention au fait que ce fichier soit accessible en écriture, sinon les changements de configuration ne pourront y être enregistrés.

1.10.5Navigation et Recherche

Dans CodeBlocks il y a plusieurs façons de naviguer rapidement entre les fichiers et les fonctions. Une procédure typique est la configuration de marques de recherche. Via le raccourci clavier Ctrl-B une marque est posée ou supprimée dans un fichier source. Via Alt-PgUp vous pouvez aller à la marque précédente, et via Alt-PgDn vous pouvez aller à la marque suivante.

Si vous sélectionnez l弾space de travail ou un projet particulier de l弾space de travail dans la vue du projet vous pouvez rechercher un fichier dans le projet. Sélectionnez tout simplement 坦echercher le fichier depuis le menu de contexte, puis tapez le nom du fichier et le fichier sera sélectionné. Si vous tapez sur la touche Entrée, ce fichier sera ouvert dans léditeur (voir Figure1.4).


pict

Figure1.4: Recherche de fichiers

Dans CodeBlocks vous pouvez facilement naviguer entre les Entêtes/Sources en :

  1. Positionnant le curseur à l弾ndroit où le fichier d弾ntête (header) est inclus puis ouvrir ce fichier via le menu de contexte 丹uvrir le fichier inclus (voir Figure1.5)
  2. Basculer du fichier d弾ntête au fichier source via le menu de contexte 達asculer en-tête/source
  3. Sélectionner par exemple un define dans léditeur et choisir 探rouver la déclaration depuis le menu de contexte pour ouvrir le fichier contenant cette déclaration.

pict

Figure1.5: Ouverture d置n fichier d弾n-têtes

CodeBlocks offre plusieurs possibilités de recherches dans un fichier ou un répertoire. La boîte de dialogue de recherche s弛uvre par 辰hercher 坦echercher (Ctrl-F) ou 坦echercher dans les fichiers (Ctrl-Shift-F).

Alt-G et Ctrl-Alt-G sont d誕utres fonctions utiles. Le dialogue qui s弛uvrira en utilisant ces raccourcis vous permet de choisir des fichiers/fonctions et aller vous positionner à l段mplémentation de la fonction sélectionnée (voir Figure1.6) ou bien ouvrir le fichier sélectionné dans léditeur. Vous pouvez utiliser dans le dialogue des jokers comme * ou ? etc. pour y obtenir une recherche incrémentale.


pict

Figure1.6: Recherche de fonctions

Note:
Avec le raccourci Ctrl-PgUp vous pouvez aller à la fonction précédente, et via Ctrl-PgDn vous pouvez aller à la fonction suivante.

Dans léditeur, vous pouvez ouvrir un nouveau dialogue Ouvrir des fichiers Ctrl-Tab et vous pouvez passer de l置n à l誕utre via la liste affichée. Si vous appuyez sur la touche Ctrl, alors un fichier peut être sélectionné de différentes façons :

  1. Si vous sélectionnez une entrée avec le bouton gauche de la souris, le fichier sélectionné sera ouvert.
  2. Si vous appuyez sur la touche Tab vous passez de l置ne à l誕utre des entrées listées. En relâchant la touche Ctrl le fichier sélectionné sera ouvert.
  3. Si vous déplacez la souris au-dessus des entrées listées, alors la sélection courante sera surlignée. En relâchant la touche Ctrl le fichier sélectionné sera ouvert..
  4. Si le pointeur de souris est en dehors de la sélection surlignée, vous pouvez utiliser la molette de la souris pour basculer entre les entrées. En relâchant la touche Ctrl le fichier sélectionné sera ouvert.

Une façon commune de développer du logiciel est de jongler avec un ensemble de fonctions implémentées dans différents fichiers. L弾xtension 韮rowse Tracker vous aidera à résoudre cette tâche en vous montrant dans quel ordre ont été sélectionnés les fichiers. Vous pouvez alors naviguer aisément entre les appels de fonctions (voir Listing2.8).

L誕ffichage des numéros de lignes dans CodeBlocks peut s誕ctiver via 単aramètres Éditeur 単aramètres généraux à l誕ide du champ 但fficher les numéros de ligne. Le raccourci Ctrl-G ou la commande de menu 坦echercher 但ller à la ligne vous aidera à atteindre la ligne désirée.

Note:
Si vous maintenez la touche Ctrl enfoncée en sélectionnant du texte dans léditeur de CodeBlocks vous pouvez lancer une recherche Internet, notamment avec Google, via le menu de contexte.

1.10.6Vue des Symboles

La fenêtre Gestion de CodeBlocks offre une vue arborescente des symboles des sources en C/C++ pour naviguer dans les fonctions et les variables. Dans ce type de vue, vous pouvez travailler sur le fichier courant, le projet courant ou tout l弾space de travail.

Note:
Entrer un terme à chercher ou des noms de symboles dans le masque d弾ntrée 坦echercher du navigateur de Symboles permet d弛btenir une vue filtrée des symboles si concordance il y a.

Les catégories suivantes existent pour les symboles :

Fonctions Globales
Liste l段mplémentation des fonctions globales.
typedefs globales
Liste l置tilisation des définitions typedef.
Variables globales
Affiche les symboles de variables globales.
Symboles du pré-processeur
Liste les directives du pré-processeur créées par #define.
Macros globales
Liste les macros des directives du pré-processeur

pict

Figure1.7: Vue des symboles

Les structures et classes sont affichées par le menu 誕rbre du bas et l弛rdre de tri peut être modifié via le menu de contexte. Si une catégorie est sélectionnée à la souris, les symboles trouvés seront affichés dans la partie basse de la fenêtre (voir Figure1.7). Double-cliquer sur un symbole ouvrira le fichier où il est défini ou bien la fonction où elle est implémentée, puis on se positionnera sur la ligne correspondante. Un rafraîchissement automatique du navigateur de symboles, sans avoir à sauvegarder de fichier, peut être activé par le menu 単aramètres Éditeur 辰ode Complétion (voir Figure1.8). Les performances de CodeBlocks seront affectées dans les projets comportant de nombreux symboles.


pict

Figure1.8: Activation de l誕nalyse en temps réel

Note:
Dans léditeur, une liste de classes peut être affichée via les menus de contexte 棚nsérer méthode de classe ou 探outes méthodes de classes sans implémentation .

1.10.7Inclure des fichiers d誕ide externes

L弾nvironnement de développement CodeBlocks supporte l段nclusion de fichiers d誕ide externes via le menu 単aramètres 脱nvironnement . Insérez le manuel au format chm de votre choix dans la sélection 巽ichiers d誕ide , sélectionnez 辰eci est le fichier d但ide par défaut (voir Figure1.9). L弾ntrée $(keyword) est un substituant pour une sélection particulière dans votre éditeur. Vous pouvez alors sélectionner une fonction dans un fichier ouvert de CodeBlocks par un simple clic, et la documentation correspondante s誕ffichera lorsque vous appuierez sur F1.

Si vous avez inclus plusieurs fichiers d誕ide, vous pouvez choisir un terme particulier dans léditeur, puis choisir le fichier d誕ide dans le menu de contexte 辰hercher dans pour que CodeBlocks l馳 recherche.


pict

Figure1.9: Configuration des fichiers d誕ide

Dans CodeBlocks vous pouvez également ajouter un support de pages man. Ajouter seulement une entrée 知an et spécifiez les chemins comme suit (NdT ici pour Linux!).

man:/usr/share/man

CodeBlocks fourni un 歎isualiseur HTML intégré, qui peut être utilisé pour afficher un simple fichier html et y rechercher des mots clés. Configurez simplement le chemin du fichier html qui doit être analysé et cochez la case 丹uvrir ce fichier avec le visualiseur d誕ide intégré via le menu 単aramètres 脱nvironnement 巽ichiers d誕ide .


pict

Figure1.10: Visualiseur HTML intégré

Note:
Si vous sélectionnez un fichier html par double clic dans l弾xplorateur (voir Listing2.7) alors le visualiseur html intégré sera démarré, du moins si aucune association vers les fichiers html n弾st faite par le gestionnaire d弾xtensions de fichiers.

1.10.8Inclure des outils externes

L段nclusion d弛utils externes dans CodeBlocks est faisable via 丹utils 辰onfigurer les outils 但jouter . Les variables internes (voir Listing3.2) peuvent aussi être utilisées comme paramètres des outils. D誕utre part, il y a plusieurs sortes d弛ptions de lancement pour démarrer des applications externes. En fonction des options, les applications externes peuvent s誕rrêter quand on quitte CodeBlocks. Si les applications doivent rester ouvertes après qu弛n ait quitté CodeBlocks, l弛ption 鱈ancer l弛util visible en mode détaché doit être cochée.

1.11Astuces pour travailler avec CodeBlocks

Dans ce chapitre nous présenterons quelques paramétrages utiles dans CodeBlocks.

1.11.1Recherche de Modifications

CodeBlocks fourni une fonctionnalité pour pister les modifications effectuées dans un fichier source et affiche une barre dans la marge là où ont eût lieu les changements. Les modifications sont marquées par une barre de changements jaune alors que celles qui ont déjà été enregistrées sont marquées par une barre de changements verte (voir Figure1.11). Vous pouvez naviguer dans vos changements à l誕ide du menu 坦echercher 但ller à la ligne changée suivante ou encore 坦echercher 但ller à la ligne changée précédente . La même fonctionnalité est accessible via les raccourcis clavier Ctrl-F3 et Ctrl-Shift-F3.


pict

Figure1.11: Recherche de modifications

Cette fonctionnalité peut être activée ou désactivée via la case à cocher 旦tiliser la barre de changements dans le menu 単aramètres Éditeur 樽arges et tirets .

Note:
Si un fichier modifié est fermé, alors l檀istorique des changements tels que défaire/refaire ainsi que la barre de changements sont perdus. À l誕ide du menu Édition 脱ffacer l檀istorique des changements ou le menu de contexte correspondant vous pouvez effacer cet historique même si le fichier reste ouvert.

1.11.2Échange de données avec d誕utres applications

Les échanges de données entre CodeBlocks et d誕utres applications sont possibles. Pour cela on utilise, avec Windows, le processus de communication inter processus DDE (Dynamic Data Exchange) et, avec les autres systèmes d弾xploitation, une communication basée sur le protocole TCP.

Avec cette interface, différentes commandes peuvent être envoyées vers une instance de CodeBlocks en suivant la syntaxe suivante.

[<command>("<parameter>")]

Les commandes suivantes sont actuellement disponibles :

Open

La commande

[Open("d:\temp\test.txt")]

utilise un paramètre, dans notre cas c弾st le nom d置n fichier avec son chemin en absolu, et il s弛uvre dans une instance existante de CodeBlocks ou bien, si nécessaire, une première instance démarre.

OpenLine

Cette commande ouvre un fichier dans une instance de CodeBlocks et se positionne sur la ligne dont le numéro est entré. Le numéro de ligne est spécifié par :ligne.

[OpenLine("d:\temp\test.txt:10")]
Raise

Donne le 杷ocus à l段nstance de CodeBlocks. Aucun paramètre ne doit être entré.

1.11.3Configurer les variables d弾nvironnement

La configuration d置n système d弾xploitation se fait par ce qu弛n appelle les variables d弾nvironnement. Par exemple, la variable d弾nvironnement PATH contient le chemin d置n compilateur installé. Le système d弾xploitation analysera cette variable dans l弛rdre décriture, c弾st à dire que les entrées de la fin seront utilisées en dernier dans les recherches. Si plusieurs versions de compilateur ou d誕utres applications sont installées, les situations suivantes peuvent se produire :

Ainsi, on peut tomber sur le cas où différentes versions d置n compilateur ou d置n autre outil sont obligatoires pour différents projets. Lorsque cela arrive, une première solution est de changer les variables d弾nvironnement dans le système d弾xploitation pour chaque projet. Toutefois cette procédure est sujette à erreur et manque de flexibilité. Pour ce faire, CodeBlocks offre une solution élégante. Différentes configurations de variables peuvent être créées pour un usage uniquement en interne à CodeBlocks. De plus, vous pouvez passer de l置ne à l誕utre de ces configurations. La Figure1.12 montre la boîte de dialogue que vous obtenez via 歎ariables d脱nvironnement dans 単aramètres 脱nvironnement . On crée une configuration à l誕ide du bouton 辰réer.


pict

Figure1.12: Variables d弾nvironnement

L誕ccès et létendue des variables d弾nvironnement ainsi créées sont limités à CodeBlocks. Vous pouvez étendre ces variables d弾nvironnement comme toutes les autres variables dans CodeBlocks à l誕ide de $(NAME).

Note:
La configuration d置ne variable d弾nvironnement pour chaque projet peut être sélectionnée dans le menu de contexte 単ropriétés de l弛nglet 丹ptions EnvVars.

Exemple

Vous pouvez écrire dans un fichier <project>.env l弾nvironnement utilisé dans une étape de post génération (voir 1.6) puis l誕rchiver dans votre projet.

cmd/cecho\%PATH\%>project.env

ou sous Linux

echo\$PATH>project.env

1.11.4Basculer entre diverses dispositions

En fonction des tâches à effectuer, il peut être utile d誕voir plusieurs configurations ou dispositions (ou présentations) différentes de CodeBlocks et de les sauvegarder. Par défaut, le paramétrage (notamment afficher/masquer les barres d弛utils, aspect, etc.) est enregistré dans le fichier de configuration default.conf. En utilisant l弛ption en ligne de commande --personality=ask au démarrage de CodeBlocks, on peut choisir parmi plusieurs possibilités de paramétrages. En dehors de ces paramétrages globaux, il peut se produire une situation où vous souhaitez basculer entre différentes vues de fenêtres ou de barres de symboles pendant une session. Lédition de fichier et le débogage de projets sont deux exemples typiques de telles situations. CodeBlocks offre un mécanisme pour enregistrer et sélectionner différentes dispositions afin déviter à l置tilisateur d誕voir à fermer et ouvrir manuellement et fréquemment des fenêtres et des barres de symboles. Pour enregistrer une disposition, sélectionnez le menu 歎ue 奪isposition 脱nregistrer la disposition actuelle et entrez un nom dans <nom>. La commande 単aramètres Éditeur 坦accourcis clavier 歎ue 奪ispositions <name> permet de définir un raccourci clavier pour ce processus. Il est ainsi possible de basculer entre les diverses dispositions simplement en utilisant ces raccourcis clavier.

Note:
Autre exemple : éditer un fichier en mode plein écran sans barre de symboles. Vous pouvez créer une disposition comme 単lein Ecran et lui assigner un raccourci spécifique.

1.11.5Basculer entre projets

Si plusieurs projets ou fichiers sont ouverts en même temps, l置tilisateur a besoin d置n moyen pour passer rapidement de l置n à l誕utre. CodeBlocks possède plusieurs raccourcis pour ce faire.

Alt-F5
Active le projet précédent de la vue des projets.
Alt-F6
Active le projet suivant de la vue des projets.
F11
Dans léditeur, bascule entre un fichier source <name>.cpp et le fichier d弾n-tête (header) correspondant <name>.h

1.11.6Configurations étendue des compilateurs

Lors de la génération d置n projet, les messages du compilateur sont affichés dans l弛nglet Messages de génération. Si vous souhaitez recevoir des informations détaillées, l誕ffichage peut être étendu. Pour cela, cliquez sur 単aramètres 辰ompilateur et débogueur puis sélectionnez l弛nglet 但utres options dans le menu déroulant.


pict

Figure1.13: Configurer des informations détaillées

Assurez vous que le compilateur soit correctement sélectionné. L弛ption 鱈igne de commande complète des Avertissements du compilateur permet de sortir des informations détaillées. De plus, ces sorties peuvent être redirigées vers un fichier HTML. Pour cela, sélectionnez 脱nregistrer le journal de génération dans un fichier HTML en fin de génération. D誕utre part, CodeBlocks peut afficher une barre d誕vancement du processus de génération dans la fenêtre de génération qui peut être activée en cochant 但fficher la barre de progression de génération.

1.11.7Zoomer dans léditeur

CodeBlocks possède un éditeur très puissant. Cet éditeur vous permet de changer la taille des caractères du texte affiché des fichiers ouverts. Si vous avez une souris avec une molette, vous n誕vez quà appuyer sur la touche Ctrl tout en tournant la molette dans un sens ou l誕utre pour agrandir ou réduire la taille du texte.

Note:
Avec le raccourci Ctrl-Numepad-/ ou à l誕ide du menu 脱dition 辰ommandes spéciales 短oom 坦emise à 0 vous restaurez la taille originale du texte courant.

1.11.8Mode de Repliement

Quand on édite des fichiers de texte, notamment des *.txt, dans CodeBlocks, il peut être utile d誕voir le texte replié, ce qui signifie que les lignes longues seront affichées sur plusieurs lignes à lécran afin qu弾lles puissent être correctement éditées. La fonction 坦epliement peut être activée dans 単aramètres Éditeur 但utres Options ou en cochant la case 但ctiver le repliement . Les touches 禰ome et 認in positionnent respectivement le curseur en début et en fin de ligne repliée. Quand on choisi 単aramètres Éditeur 但utres Options et 鱈a touche Home déplace toujours le curseur en première colonne , le curseur sera positionné respectivement en début ou en fin de ligne si on appuie sur la touche 禰ome ou 認in. Si on désire placer le curseur au début de la première ligne du paragraphe en cours, il vous faut utiliser la combinaison de touches 但lt-Home . La même chose de façon analogue pour 但lt-Fin pour positionner le curseur en fin de la dernière ligne du paragraphe courant.

1.11.9Sélection de modes dans léditeur

CodeBlocks supporte différents modes de sélection pour le couper-coller des chaînes de caractères.

  1. Un texte de léditeur actif peut être sélectionné avec le bouton gauche de la souris, puis on relâche ce bouton. L置tilisateur peut se déplacer de haut en bas avec la molette de la souris. Si on appuie sur le bouton du milieu, le texte précédemment sélectionné sera inséré. Cet effet est disponible au niveau d置n fichier et peut être vu comme un presse papier de fichier.
  2. Appuyer sur la touche 但LT active ce qu弛n appelle la sélection en mode bloc et un rectangle de sélection s誕ffiche à l誕ide du bouton gauche de la souris. Lorsqu弛n relâche la touche Alt cette sélection peut être copiée ou collée. Cette option est utile si vous voulez sélectionner des colonnes, notamment dans un tableau et en copier-coller le contenu.
  3. Dans le menu 単aramètres Éditeur 樽arges et tirets on peut activer ce qu弛n appelle des 脱spaces Virtuels . Ceci active la possibilité d誕voir une sélection en mode bloc qui peut commencer ou se terminer par une ligne vide.
  4. Dans le menu 単aramètres Éditeur 樽arges et tirets on peut activer les 担élections Multiples . En maintenant enfoncée la touche Ctrl l置tilisateur peut sélectionner diverses lignes dans léditeur actif avec le bouton gauche de la souris. Les sélections sont ajoutées dans le presse papier à l誕ide des raccourcis Ctrl-C ou Ctrl-X. Ctrl-V en insèrera le contenu à la position courante du curseur. Une option complémentaire dénommée 但ctive l弾ntrée clavier (et la suppression) peut être activée pour les sélections multiples. Cette option est utile si vous voulez ajouter des directives de pré-processeur comme #ifdef sur plusieurs lignes de code source ou si vous voulez superposer ou remplacer du texte en plusieurs endroits.

Note:
La plupart des gestionnaires de fenêtres de Linux utilisent ALT-ClicGaucheDéplacer pour déplacer une fenêtre, aussi vous devrez désactiver cette fonctionnalité pour pouvoir sélectionner en mode bloc.

1.11.10Repliement de code

CodeBlocks supporte ce qu弛n appelle le repliement de code. Avec cette fonctionnalité vous pouvez replier notamment les fonctions dans léditeur de CodeBlocks. Un point de repliement est marqué dans la marge gauche de léditeur par un signe moins. Dans la marge, le début et la fin d置n point de repliement sont visibles à l誕ide d置ne ligne verticale. Si vous cliquez sur le signe moins avec le bouton gauche de la souris, la portion de code sera repliée ou dépliée. Via le menu 脱dition 坦epliement vous pouvez sélectionner le repliement. Dans léditeur, un code replié est vu comme une ligne horizontale continue.

Note:
Le style de repliement et la profondeur limite du repliement peuvent se configurer dans le menu 単aramètres Éditeur 坦epliement .

CodeBlocks fournit aussi la fonctionnalité de repliement pour les directives du pré-processeur. Pour l誕ctiver, sélectionnez 坦eplier les commandes du pré-processeur dans l弾ntrée Repliement de 単aramètres Éditeur .

Une autre façon de faire est de définir des points de repliement utilisateurs. Le point de départ du repliement s弾ntre comme un commentaire suivi d置ne parenthèse ouvrante et la fin comme un commentaire suivi d置ne parenthèse fermante.

//{
codeavecrepliementdéfiniparl'utilisateur
//}

1.11.11Auto complétion

Lorsque vous ouvrez un projet dans CodeBlocks les 坦épertoires de recherche de votre compilateur et de votre projet, les fichiers sources et d弾n-têtes de votre projet sont analysés. De plus les mots clés de l誕nalyseur syntaxique correspondant sont analysés également. Les informations issues de l誕nalyse sont alors utilisées pour la fonctionnalité d誕uto complétion dans CodeBlocks. Vérifiez s段l vous plait que cette fonctionnalité est bien activée dans léditeur. L誕uto complétion est accessible au travers du raccourci Ctrl-Espace. Via le menu 単aramètres Éditeur 辰olorisation syntaxique vous pouvez ajouter des mots clés définis par l置tilisateur à votre analyseur syntaxique.

1.11.12Recherche de fichiers cassés

Lorsqu置n fichier est supprimé du disque, mais est toujours inclus dans un fichier projet <project>.cbp, alors un 断ichier cassé sera affiché avec un symbole 把assé dans la vue du projet. Vous devriez utiliser 脱nlever ce fichier du projet plutôt que de supprimer le fichier.

Dans de gros projets, avec de nombreux sous-répertoires, la recherche de fichiers cassés peut être une grande consommatrice de temps. Avec l弾xtension ThreadSearch (voir Listing2.6) CodeBlocks apporte une solution simple à ce problème. Si vous entrez une expression de recherche dans ThreadSearch et sélectionnez l弛ption 巽ichiers du projet ou 巽ichiers de l弾space de travail , alors ThreadSearch analysera tous les fichiers qui sont inclus dans le projet ou l弾space de travail. Si un fichier cassé est trouvé, ThreadSearch génèrera une erreur sur le fichier absent.

1.11.13Inclure des librairies

Dans les options de génération d置n projet, vous pouvez ajouter les librairies utilisées via le bouton 但jouter dans l弾ntrée 鱈ibrairies à lier des 丹ptions de léditeur de liens. Ce faisant, vous pouvez soit utiliser le chemin absolu de la librairie ou seulement donner son nom sans le préfixe lib ni l弾xtension du fichier.

Exemple

Pour une librairie nommée <path>\libs\lib<name>.a, écrire seulement <name>. Léditeur de liens avec les chemins de recherche correspondants inclura alors correctement les librairies.

Note:
Une autre façon d段nclure des librairies est documentée dans la Listing2.10.

1.11.14Ordre dédition de liens des fichiers objets

Lors de la compilation, les fichiers objets name.o sont créés à partir des sources name.c/cpp. Léditeur de liens assemble les fichiers objets individuels pour en faire une application name.exe ou sur d誕utre systèmes name.elf. Dans certains cas, il peut être préférable de prédéfinir l弛rdre dans lequel seront liés les fichiers objets. Vous pouvez obtenir cela dans CodeBlocks en assignant des priorités. Dans le menu de contexte 単ropriétés , vous pouvez définir les priorités d置n fichier dans l弛nglet Générer. Une priorité faible fera que le fichier sera lié plus tôt.

1.11.15Sauvegarde automatique

CodeBlocks offre la possibilité d弾nregistrer automatiquement les projets et les fichiers sources, ou encore de créer des copies de sauvegarde. Cette fonctionnalité peut être activée dans le menu 単aramètres 脱nvironnement 担auvegarde-auto . Ce faisant, 脱nregistrer dans un fichier .save doit être spécifié comme méthode de création de copie de sauvegarde.

1.11.16Configuration des extensions de fichiers

Dans CodeBlocks, vous pouvez choisir entre plusieurs méthodes de traitement des extensions de fichiers. La boîte de dialogue de configuration s弛uvre par 単aramètres 竪estion des extensions de fichiers . Vous pouvez alors soit utiliser les applications assignées par Windows pour chaque extension de fichier (l弛uvrir avec l誕pplication associée), ou changer la configuration pour chaque extension de telle façon que ce soit un programme défini par l置tilisateur qui soit lancé (lancer un programme externe), ou que ce soit CodeBlocks qui ouvre le fichier dans son éditeur (l弛uvrir dans léditeur de Code::Blocks).

Note:
Si un programme utilisateur est associé à une certaine extension de fichier, la configuration 奪ésactiver Code::Blocks quand un programme externe est lancé devrait être désactivée, sinon CodeBlocks sera fermé dès qu置n fichier qui possède cette extension est ouvert.

1.12CodeBlocks en ligne de commande

L脱nvironnement de Développement Intégré (IDE) CodeBlocks peut être exécuté depuis une ligne de commande sans interface graphique. Dans ce cas, plusieurs options sont disponibles pour contrôler le processus de génération d置n projet. Comme CodeBlocks peut être piloté par des 敗cripts, la création d弾xécutables peut être intégrée dans vos propres processus de travail.

codeblocks.exe/na/nd--no-splash-screen--built<name>.cbp--target='Release'

<filename>

Spécifie le nom du fichier de projet *.cbp ou le nom de l弾space de travail *.workspace. Par exemple, <filename> peut être project.cbp. Placez cet argument en fin de ligne de commande, juste avant la redirection de la sortie, s段l y en a une.

--file=<filename>[:ligne]

Ouvrir un fichier dans Code::Blocks et, en option, se positionner sur une ligne particulière.

/h, --help

Affiche un message d誕ide concernant les arguments en ligne de commande.

/na, --no-check-associations

Ne faire aucun contrôle d誕ssociation de fichiers (Windows seulement).

/nd, --no-dde

Ne pas lancer le serveur DDE (Windows seulement).

/ni, --no-ipc

Ne pas lancer le serveur IPC (Linux et Mac seulement).

/ns, --no-splash-screen

Ne pas afficher lécran de démarrage pendant le chargement de l誕pplication.

/d, --debug-log

Afficher le journal de débogage de l誕pplication.

--prefix=<str>

Configure le préfixe du répertoire de données partagées.

/p, --personality=<str>, --profile=<str>

Configure le profil (ou personnalité) à utiliser. Vous pouvez utiliser le paramètre ask pour afficher la liste de tous les profils disponibles.

--rebuild

Nettoie et génère le projet ou l弾space de travail.

--build

Génère le projet ou l弾space de travail.

--target=<str>

Configure la cible de génération. Par exemple --target=坦elease.

--no-batch-window-close

Garde la fenêtre batch de journalisation visible après que la génération par batch soit terminée.

--batch-build-notify

Affiche un message une fois que la génération batch est terminée.

--safe-mode

Désactive toutes les extensions (plugins) au démarrage.

> <build log file>

Placé en toute dernière position d置ne ligne de commande, ceci permet à l置tilisateur de rediriger la sortie standard vers un fichier log. Ceci n弾st pas à proprement parler une option de codeblocks, mais seulement une redirection standard des sorties des shells DOS/*nix.

1.13Raccourcis

Même si une IDE comme CodeBlocks est surtout pilotée à la souris, les raccourcis claviers sont néanmoins moyen très pratique pour accélérer et simplifier le travail. Les tableaux ci-dessous regroupent quelques-uns des raccourcis claviers disponibles.

1.13.1Éditeur

Ceci est une liste des raccourcis fournis pas le composant éditeur de CodeBlocks. Ces raccourcis ne peuvent pas être substitués.

1.13.2Files

1.13.3Vue

1.13.4Recherche

1.13.5Générer

2Extensions

2.1Astyle

Artistic Style est un indentateur de code source, un formateur de code source, et rend le code source des langages de programmation C, C++, C# plus beau. On peut l置tiliser pour sélectionner différents styles de règles de codage dans CodeBlocks.


pict

Figure2.1: Formater votre code source

Quand on indente un code source, nous en tant que programmeurs avons tendance à utiliser à la fois des espaces et des caractères de tabulations pour créer l段ndentation souhaitée. De plus, certains éditeurs insèrent par défaut des espaces à la place des tabulations quand on appuie sur la touche Tab, alors que d誕utres éditeurs ont la faculté de rendre les lignes plus belles en ajoutant automatiquement des espaces en début de lignes, éventuellement en remplaçant dans ce code les tabulations utilisées jusqu誕lors pour l段ndentation par des espaces.

Comme le nombre de caractères affichés sur lécran pour chaque caractère de tabulation change d置n éditeur à l誕utre, un des problèmes courants auquel est confronté un programmeur qui passe d置n éditeur à un autre est qu置n code qui contient à la fois des espaces et des tabulations et qui était jusquà présent bien indenté, devient soudain difficile à regarder après le changement déditeur. Même si en tant que programmeur vous faites attention à n置tiliser QUE des espaces ou QUE des tabulations, récupérer un code de quelqu置n d誕utre peut malgré tout être problématique.

C弾st pour résoudre ce problème qu但rtistic Style a été créé - un filtre écrit en C++ qui ré-indente et reformate automatiquement les fichiers sources en C / C++ / C#.

Note:
Quand vous copiez du code, par exemple depuis Internet ou d置n manuel, ce code sera automatiquement adapté aux règles de codage dans CodeBlocks.

2.2CodeSnippets

L弾xtension CodeSnippets permet de structurer des modules de texte et des liens vers des fichiers en fonction de catégories dans une vue arborescente. Les modules sont utilisés pour stocker des fichiers fréquemment utilisés, des constructions de modules de texte, le tout géré depuis un endroit centralisé. Imaginez la situation suivante : Un certain nombre de fichiers source fréquemment utilisés sont stockés dans divers répertoires du système de fichiers. La fenêtre de CodeSnippets vous donne l弛pportunité de créer des catégories et, à l段ntérieur de ces catégories, des liens vers les fichiers requis. Avec cette fonctionnalité, vous pouvez contrôler l誕ccès aux fichiers indépendamment de l弾ndroit où ils sont stockés dans le système de fichiers, et vous pouvez rapidement naviguer entre ces fichiers sans avoir besoin de les chercher un peu partout dans le système.

Note:
Vous pouvez utiliser les variables CodeBlocks ou les variables d弾nvironnement dans les liens vers les fichiers comme $(VARNAME)/name.pdf pour paramétrer un lien dans le navigateur de CodeSnippets.

La liste des modules de texte et des liens peut être enregistrée dans la fenêtre des CodeSnippets en cliquant sur le bouton droit de la souris et en sélectionnant 脱nregistrer l段ndex depuis le menu de contexte. Le fichier codesnippets.xml qui est alors créé par cette procédure, se trouve dans le sous-répertoire codeblocks du répertoire Documents and Settings\Application data. Sous Linux, cette information est enregistrée dans le sous-répertoire .codeblocks de votre répertoire HOME. Les fichiers de configuration de CodeBlocks seront chargés au démarrage suivant. Si vous souhaitez enregistrer le contenu des CodeSnippets à un autre endroit, sélectionnez l弾ntrée 脱nregistrer l段ndex sous. Pour charger ce fichier, sélectionnez 辰harger le fichier d段ndex lors du démarrage suivant de CodeBlocks ou incluez le répertoire dans les 単aramètres du menu de contexte de 坦épertoire des Snippets. Les paramétrages sont enregistrés dans le fichier correspondant codesnippets.ini dans votre application data.

Pour inclure une catégorie, utilisez le menu 但jouter une sous-catégorie. Une catégorie peut contenir des Snippets (modules de texte) ou des Liens vers un fichier. Un module de texte est créé via la commande 但jouter un Snippet depuis le menu de contexte. Le contenu est intégré dans le module de texte comme un 誰ouveau snippet en sélectionnant un passage de texte dans léditeur de CodeBlocks et en le glissant-déposant sur le module dont les propriétés s誕ffichent. En double cliquant sur la nouvelle entrée ou en sélectionnant Éditer le Texte on en éditera le contenu.


pict

Figure2.2: Édition d置n module de texte

La sortie d置n module de texte est gérée dans CodeBlocks via la commande 但ppliquer du menu de contexte ou en faisant un glisser-déposer dans léditeur. Sous Windows, le contenu d置n Snippet peut également être glissé-déposé dans d誕utres applications. Dans le navigateur de CodeSnippets vous pouvez copier une sélection par glisser-déposer vers une catégorie différente.

De plus, les modules de texte peuvent être paramétrés par des variables <name> qui peuvent être accédées via $(name) (voir Figure2.2). Les valeurs des variables peuvent être récupérées dans un champ d弾ntrée si le module de texte est appelé via la commande du menu de contexte 但ppliquer.

À côté des modules de texte, des liens vers des fichiers peuvent aussi être créés. Si, après avoir créé un module de texte, vous cliquez sur la commande 単ropriétés du menu de contexte, vous pouvez alors sélectionner une cible de type lien en cliquant sur le bouton 鱈ien cible. Cette procédure convertira automatiquement le module de texte en un lien vers un fichier. Dans CodeSnippets, tous les modules de texte sont marqués par un symbole T, les liens vers un fichier par un symbole F et les urls par un symbole U. Si vous voulez ouvrir un fichier sélectionné (lien) dans la vue des codesnippets, sélectionnez tout simplement le menu de contexte 丹uvrir le fichier ou tout en maintenant enfoncée la touche 但lt effectuez un double clic sur le fichier.

Note:
Vous pouvez même ajouter une url (comme http://www.codeblocks.org) dans les modules de texte. L置rl peut être ouverte en utilisant le menu de contexte 丹uvrir l旦rl ou en utilisant un glisser-déposer vers votre navigateur favori.

Avec un tel paramétrage, si vous ouvrez un lien vers un fichier pdf depuis la vue des codesnippets, un visualiseur de fichiers pdf sera automatiquement démarré. Cette méthode rend possible à l置tilisateur l誕ccès à des fichiers répartis un peu partout sur le réseau, comme des données, mises en forme, documentations etc., à l誕ide des applications communes, simplement par le biais d置n lien. Le contenu des codesnippets est enregistré dans le fichier codesnippets.xml, la configuration est enregistrée dans le fichier codesnippets.ini de votre répertoire application data. Ce fichier ini contiendra, par exemple, le chemin du fichier codesnippets.xml.

CodeBlocks supporte l置tilisation de différents profils. Ces profils sont aussi nommés personnalités. En démarrant, avec l弛ption --personality=<profile>, CodeBlocks en ligne de commande vous créez ou utilisez un profil existant. Dans ce cas, le paramétrage ne sera pas enregistré dans le fichier default.conf, mais plutôt dans un <personality>.conf de votre répertoire application data. L弾xtension Codesnippets enregistrera alors ses paramètres dans un fichier <personality>.codesnippets.ini. Maintenant, si vous chargez un nouveau contenu <name.xml> dans les paramètres de codesnippets via 辰harger un fichier d段ndex, ce contenu sera enregistré dans le fichier ini correspondant. L誕vantage de cette méthode tient dans le fait que dans le cas où il y a différents profils, on peut gérer plusieurs configurations de modules de textes et de liens.

L弾xtension offre une fonction de recherche complémentaire pour naviguer dans les catégories et les Snippets. La façon de rechercher dans les Snippets, catégories ou Snippets et catégories peut s誕juster. En entrant l弾xpression de recherche requise, l弾ntrée correspondante est automatiquement sélectionnée dans la vue. La Figure2.3 affiche une fenêtre CodeSnippets typique.


pict

Figure2.3: Vue des CodeSnippets

Note:
Quand on utilise de volumineux modules de texte, le contenu de ces modules devrait être enregistré sous forme de fichiers via 辰onvertir en lien vers fichier de façon à réduire l置tilisation mémoire du système. Si vous supprimez un codesnippet ou un lien vers un fichier il est en fait déplacé vers une catégorie .trash; si vous maintenez enfoncée la touche Maj cet élément sera réellement détruit.

2.3Recherche Incrémentale

Pour obtenir une recherche efficace dans des fichiers ouverts, CodeBlocks fourni ce qu弛n nomme une recherche incrémentale. Cette méthode de recherche s段nitialise, pour un fichier ouvert, via le menu 坦echercher 坦echerche Incrémentale ou par le raccourci clavier Ctrl-I. L弾ntrée active passe alors automatiquement à la configuration du masque de recherche dans la barre d弛util correspondante. Dès que vous commencez à entrer des termes de recherche, le fond du masque de recherche s誕juste en fonction des occurrences des termes. Si un accord est trouvé dans léditeur actif, la position respective est marquée en couleur. Par défaut l誕ccord courant est surligné en vert. Cette configuration peut être changée dans 単aramètres Éditeur Recherche Incrémentale (voir Figure2.4). En appuyant sur la touche Entrée la recherche saute à l弛ccurrence suivante de la chaîne de texte recherchée à l段ntérieur du fichier. Avec Maj-Entrée, c弾st l弛ccurrence précédente qui est sélectionnée. Cette fonctionnalité n弾st pas supportée par Scintilla si la recherche incrémentale utilise des expressions régulières.

pict

Si la chaîne de caractère recherchée ne peut pas être trouvée dans le fichier courant, afin d段ndiquer que c弾st ce qui se passe, le fond du masque de recherche est affiché en rouge.


pict

Figure2.4: Paramètres pour la Recherche Incrémentale

ESC
Quitte le module de Recherche Incrémentale.
ALT-Suppr
Efface l弾ntrée du champ de recherche incrémentale.

Les icônes de la barre d弛util de Recherche Incrémentale ont les significations suivantes :

pict
Suppression du texte dans le masque de recherche de la barre d弛utils de Recherche Incrémentale.
pict,pict
Navigation dans les occurrences de chaîne recherchée.
pict
En cliquant sur ce bouton ce sont toutes les occurrences de la chaîne recherchée qui sont surlignées en couleur, pas seulement la première.
pict
Activer cette option réduit le champ de recherche au passage de texte marqué dans léditeur.
pict
Cette option signifie que la recherche sera sensible à la casse (respect des majuscules et minuscules).
pict
Valider les expressions régulières dans le champ d弾ntrée de la recherche incrémentale.

Note:
Le paramétrage standard de cette barre d弛util peut être configuré dans 単aramètres Éditeur 坦echerche Incrémentale .

2.4Liste des à faire

Dans des projets logiciels complexes, où différents développeurs sont impliqués, il est souvent nécessaire que différentes tâches soient effectuées par plusieurs utilisateurs. Pour cela, CodeBlocks possède une Liste des à faire. Cette liste s弛uvre via 歎ue 鱈iste des 尿 faire白 , et contient les tâches à effectuer ensemble, avec leurs priorités, le type et le responsable de la tâche. On peut filtrer la liste par tâches, utilisateurs et/ou fichiers sources. Un tri par colonnes peut être effectué en cliquant sur le titre de la colonne correspondante.


pict

Figure2.5: Affichage de la Liste des 尿 faire

Note:
La liste des à faire peut être ajoutée à la console de messages. Sélectionnez l弛ption 棚nclure la liste des 尿 faire dans le panneau de messages à l誕ide du menu 単aramètres 脱nvironnement .

Si les fichiers sources sont ouverts dans CodeBlocks, un à faire peut être ajouté à la liste via la commande 但jouter un élement à faire白 du menu de contexte. Un commentaire est ajouté dans le code sur la ligne sélectionnée.

//TODO(user#1#):ajouterunnouveaudialoguepourlaprochainerelease

Quand on ajoute un à faire, une boîte de dialogue apparaît où les paramétrages suivants peuvent être faits (voir Figure2.6).


pict

Figure2.6: Dialogue pour ajouter un à faire

Utilisateur
Nom de l置tilisateur <user> pour le système d弾xploitation. Les tâches pour d誕utres utilisateurs peuvent également être créées ici. Pour cela, le nom de l置tilisateur correspondant doit être créé par Ajouter un nouvel utilisateur. L誕ssignation d置n à faire est alors faite via une sélection d弾ntrées pour cet utilisateur.

Note:
Notez que les Utilisateurs ici n弛nt rien à voir avec les profils (ou personnalités) utilisés dans CodeBlocks.
Type
Par défault, le type est TODO (à faire).
Priorité
Dans CodeBlocks, l段mportance de la tâche peut être exprimée par des priorités (1 - 9).
Position
Ce paramètre spécifie si le commentaire doit être inclus avant, après ou bien à la position exacte du curseur.
Style de commentaire
Une sélection de formats de commentaires (notamment doxygen).

2.5Exporter du code Source

Il est souvent nécessaire de transférer du code source vers d誕utres applications ou vers des e-mails. Si le texte est simplement copié, le formattage est perdu, ce qui rend le texte peu clair. La fonction exporter de CodeBlocks est une des solutions dans ce type de situations. Le format requis pour le fichier exporté peut être sélectionné via 巽ichier 脱xporter . Le programme adoptera alors le nom de fichier et le répertoire cible en fonction du fichier source ouvert et les proposera pour enregistrer le fichier à exporter. L弾xtension de fichier appropriée à chaque cas de figure sera déterminé par le type de l弾xportation. Les formats suivants sont disponibles :

html
Un format de type texte qui peut être affiché dans un navigateur web ou dans un traitement de texte.
rtf
Le format Rich Text qui est un format basé sur du texte et qui peut être ouvert dans un traitement de texte comme Word ou OpenOffice.
odt
Le format Open Document Text qui est un format standardisé spécifié par Sun et O坦eilly. Ce format peut être traité par Word, OpenOffice et d誕utres traitements de texte.
pdf
Le format Portable Document qui peut être ouvert par des applications comme Acrobat Reader.

2.6Thread Search

Via le menu 坦echercher 探hread Search , cette extension peut être affichée ou masquée en tant qu弛nglet dans la console de messages. Dans CodeBlocks, une prévisualisation de l弛ccurrence de la chaîne de caractères peut être affichée pour un fichier, un espace de travail ou un répertoire. Ce faisant, la liste des résultats de la recherche sera affichée sur la partie droite de la console ThreadSearch. En cliquant sur une entrée de la liste, une prévisualisation s誕ffiche sur la partie gauche. En double cliquant dans la liste, le fichier sélectionné est ouvert dans léditeur de CodeBlocks.

Note:
Létendue des extensions de fichiers à inclure dans la recherche est préconfiguré et peut avoir besoin dêtre ajusté.

2.6.1Fonctionnalités

L弾xtension ThreadSearch offre les fonctionnalités suivantes :


pict

Figure2.7: Panneau de Thread Search

2.6.2Utilisation

  1. Configurez vos préférences de recherche (voir Figure2.8)

    Une fois l弾xtension installée, il y a 4 façons de conduire une recherche :

    1. Tapez/Sélectionnez un mot dans la boîte de recherche combinée et appuyez sur Entrée ou cliquez sur Rechercher dans le panneau de Thread search de la console de messages.
    2. Tapez/Sélectionnez un mot dans la boîte de recherche combinée de la barre d弛util et appuyez sur Entrée ou cliquez sur le bouton Rechercher.
    3. Clic droit sur n段mporte quel 知ot dans léditeur actif puis cliquez sur 坦echercher les occurrences.
    4. Cliquez sur Rechercher/Thread search pour trouver le mot courant dans léditeur actif.

      Note:
      Les points 1, 2 et 3 peuvent ne pas être disponibles en fonction de la configuration courante.
  2. Cliquez de nouveau sur le bouton de recherche pour arrêter la recherche en cours.
  3. Un clic simple sur un élément résultat l誕ffiche dans la prévisualisation sur la droite.
  4. Un double clic sur un élément résultat ouvre ou configure un éditeur sur la droite.

2.6.3Configuration

Pour accéder au panneau de configuration de l弾xtension ThreadSearch cliquez sur (voir Figure2.8) :


pict

Figure2.8: Configuration de Thread Search

  1. Bouton des Options du panneau de Thread search dans la console des messages.
  2. Bouton des Options dans la barre d弛utils de Thread search.
  3. Menu Paramètres/Environnement puis choisir lélément Thread search dans la colonne de gauche.

Note:
Les points 1, 2 et 3 peuvent ne pas être disponibles en fonction de la configuration courante.

La recherche partielle défini l弾nsemble de fichiers qui seront analysés.

2.6.4Options

Mot entier
si coché, lignes contenant l弾xpression recherchée si l弾xpression recherchée est trouvée sans caractères alphanumériques +_ avant et après.
Début de mot
si coché, lignes contenant l弾xpression recherchée si l弾xpression recherchée est trouvée au début d置n mot sans caractères alphanumériques +_ avant et après.
Respecter la casse
si coché, la recherche est sensible à la casse (majuscules-minuscules).
Expression régulière
l弾xpression recherchée est une expression régulière.

Note:
Si vous voulez chercher des expressions régulières comme \n vous devrez choisir l弛ption 旦tiliser des recherches RegEx avancées via le menu 単aramètres Éditeur 単aramètres généraux .

2.6.5Options de Thread search (ou Tâche de Recherche)

Activer les éléments du menu contextuel 探rouver les occurrences
Si coché, l弾ntrée Trouver les occurrences est ajoutée au menu contextuel de léditeur.
Utiliser les options par défaut du menu 探rouver les occurrences
Si coché, un ensemble d弛ptions par défaut est appliqué aux recherches lancées par 探rouver les occurrences du menu de contexte correspondant. Par défaut l弛ption 樽ot entier et 坦especter la casse est activé.
Effacer les résultats précédents en début de recherche
Si l弾xtension ThreadSearch est configurée en 歎ue arborescente alors les résultats de la recherche sont listés dans l弛rdre hiérarchique suivant,

Si vous recherchez plusieurs termes, la liste deviendra confuse, aussi les résultats des recherches précédents peuvent être supprimés en utilisant cette option en début de recherche.

Note:
Dans la liste des occurrences les termes seuls ou tous les termes peuvent être supprimés via le menu de contexte 担upprimer lélément ou 担upprimer tous les éléments .

2.6.6Mise en page

Afficher l弾ntête dans la fenêtre de logs
si coché, l弾n-tête est affiché dans la liste des résultats de contrôle.

Note:
Si non coché, les colonnes ne sont plus redimensionnables mais on économise de la place.
Dessiner des lignes entre les colonnes
Dessine des lignes entre les colonnes en mode Liste.
Afficher la barre d弛utils de ThreadSearch
Afficher la barre d弛utils de l弾xtension ThreadSearch.
Afficher les widgets de recherche dans le panneau de messages de ThreadSearch
Si coché, seuls les résultats de la liste de contrôle et léditeur de prévisualisation sont affichés. Les autres widgets de recherches sont masqués (économise de la place).
Afficher léditeur de prévisualisation de code
La prévisualisation du code peut être masquée soit par cette case à cocher soit par un double clic sur la bordure du séparateur en milieu de fenêtre. C弾st ici qu弛n peut le faire de nouveau s誕fficher.

2.6.7Panneau de Gestion

Vous pouvez choisir différents modes de gestion de la fenêtre de ThreadSearch. Avec le choix 単anneau de Messages la fenêtre ThreadSearch sera intégrée à la console de messages dans un des onglets. Si vous choisissez 樽ise en page vous pourrez le détacher de la console et obtenir une fenêtre flottante que vous pourrez placer ailleurs.

2.6.8Type de journal

La vue des résultats de recherche peut s誕fficher de plusieurs façons. Le choix 鱈iste affiche toutes les occurrences sous forme d置ne liste. L誕utre mode 但rborescence assemble toutes les occurrences internes d置n fichier dans un noeud.

2.6.9Mode de partage de fenêtre

L置tilisateur peut configurer la séparation de fenêtre de prévisualisation et de sortie des résultats de recherche horizontalement ou verticalement.

2.6.10Tri des résultats de recherche

Les résultats de recherche peuvent être triés par le nom de chemin ou le nom de fichier.

2.7Extensions FileManager et PowerShell

L弾xplorateur de fichiers Figure2.9 est inclus dans l弾xtension FileManager, et se trouve dans l弛nglet 巽ichiers. L誕spect de File Explorer est montré à la Figure2.9.

En haut vous trouverez le champ d弾ntrée du chemin. En cliquant sur le bouton à l弾xtrémité de ce champ, la flèche vers le bas listera un historique des entrées précédentes dans lesquelles on peut naviguer à l誕ide d置ne barre de défilement. La flèche vers le haut à droite du champ déplace d置n cran vers le haut dans la structure des répertoires.

Dans le champ 谷oker vous pouvez entrer un filtre de visualisation pour l誕ffichage des fichiers. En laissant vide ce champ ou en y entrant * vous afficherez tous les fichiers. En y entrant *.c;*.h par exemple, vous n誕fficherez que les fichiers sources en C et les fichiers d弾n-têtes (headers). Ouvrir la flèche du bas, affiche de nouveau la liste des dernières entrées.


pict

Figure2.9: Le gestionnaire de fichiers

Appuyer sur la touche Maj tout en cliquant, sélectionne un groupe de fichiers ou de répertoires, alors qu誕ppuyer sur la touche Ctrl tout en cliquant sélectionne des fichiers multiples ou des répertoires séparés.

Les opérations suivantes peuvent être obtenues via le menu de contexte si un ou plusieurs répertoires ont été sélectionnés dans l脱xplorateur de Fichiers :

Make Root
défini le répertoire courant comme répertoire de base.
Ajouter aux favoris
configure un marqueur pour ce répertoire et l弾nregistre dans les favoris. Cette fonction permet de naviguer rapidement entre des répertoires fréquemment utilisés ou encore sur des disques réseau.
Nouveau Fichier
crée un nouveau fichier dans le répertoire sélectionné.
Nouveau Répertoire
crée un nouveau sous répertoire dans le répertoire sélectionné.

Les opérations suivantes peuvent être obtenues via le menu de contexte si un ou plusieurs fichiers ou même un ou plusieurs répertoires ont été sélectionnés dans l脱xplorateur de Fichiers :

Dupliquer
copie un fichier/répertoire et le renomme.
Copier vers
ouvre une boîte de dialogue pour entrer un répertoire cible dans lequel on copiera les fichiers/répertoires.
Déplacer vers
déplace la sélection vers un autre endroit.
Supprimer
supprime les fichiers/répertoires sélectionnés.
Afficher les fichiers masqués
active/désactive l誕ffichage des fichiers systèmes masqués. Si activé, le menu est coché par un marqueur.
Actualiser
actualise l誕ffichage de l誕rborescence des répertoires.

Les opérations suivantes peuvent être obtenues via le menu de contexte si un ou plusieurs fichiers ont été sélectionnés dans l脱xplorateur de Fichiers :

Ouvrir dans léditeur CB
ouvre le fichier sélectionné dans léditeur de CodeBlocks.
Renommer
renomme le fichier sélectionné.
Ajouter au projet actif
ajoute le(s) fichier(s) au projet actif.

Note:
Les fichiers/répertoires sélectionnés dans l弾xplorateur de fichiers peuvent être accédés dans l弾xtension PowerShell à l誕ide de la variable mpaths.

On peut spécifier via la commande de menu 単aramètres 脱nvironnement 単owerShell des fonctions utilisateur. Dans le masque de PowerShell, une nouvelle fonction qui peut être nommée aléatoirement, est créée via le bouton 誰ouveau. Dans le champ 担hellCommand Executable, le programme exécutable est spécifié, et dans le champ en bas de la fenêtre, des paramètres additionnels peuvent être passés au programme. En cliquant sur la fonction dans le menu de contexte ou dans le menu de PowerShell, la fonction s弾xécute et traite les fichiers/répertoires sélectionnés. La sortie est redirigée vers une fenêtre de shell séparée.

Par exemple une entrée de menu a été créée dans 単owerShell 担VN et dans le menu de contexte en tant que 担VN. Dans ce contexte $file signifie le fichier sélectionné dans l弾xplorateur de fichiers, $mpath les fichiers ou répertoires sélectionnés (voir Listing3.2).

Ajouter;$interpreteradd$mpaths;;;

Celle-ci et toutes les commandes suivantes créeront un sous-menu, dans ce cas 脱xtensions 担VN 但jouter . Le menu de contexte est étendu de même. Cliquez sur la commande du menu de contexte pour faire exécuter la commande SVN add sur les fichiers/répertoires sélectionnés.

TortoiseSVN est un programme SVN très répandu qui s段ntégre dans l弾xplorateur. Le programme TortoiseProc.exe de TortoiseSVN peut être démarré en ligne de commande et affiche une boîte de dialogue pour y entrer les données de l置tilisateur. Ainsi vous pouvez lancer des commandes, disponibles en tant que menus de contexte dans l弾xplorateur, également en ligne de commande. Vous pouvez donc l段ntégrer en tant qu弾xtension du Shell dans CodeBlocks. Par exemple, la commande

TortoiseProc.exe/command:diff/path:$file

affichera les différences entre un fichier sélectionné dans l弾xplorateur de CodeBlocks et celui de la base de SVN. Voir Figure2.10 comment intégrer cette commande.

Note:
Pour les fichiers qui sont sous le contrôle de SVN l弾xplorateur de fichier affiche des icônes superposées qui s誕ctivent via le menu 歎ue 担VN Decorators .

pict

Figure2.10: Ajout d置ne extension Shell au menu de contexte

Exemple

Vous pouvez utiliser l弾xplorateur de fichiers pour afficher les différences sur des fichiers ou des répertoires. Suivez les étapes suivantes :

  1. Ajoutez le nom via le menu 単aramètres 脱nvironnement 単owerShell . C弾st affiché comme une entrée par l段nterpréteur de menu et le menu de contexte.
  2. Sélectionnez le chemin absolu de l弾xécutable Diff (notamment kdiff3). Le programme est accédé avec la variable $interpreter.
  3. Ajoutez les paramètres de l段nterpréteur
    Diff;$interpreter$mpaths;;;

Cette commande sera exécutée en utilisant les fichiers ou répertoires sélectionnés en tant que paramètres. La sélection peut être accédée via la variable $mpaths. Ceci est une façon commode de différentier des fichiers ou des répertoires.

Note:
L弾xtension supporte l置tilisation des variables de CodeBlocks dans l弾xtension du Shell.
$interpreter

Appelle cet exécutable.

$fname

Nom du fichier sans son extension.

$fext

Extension du fichier sélectionné.

$file

Nom du fichier.

$relfile

Nom du fichier sans l段nformation de chemin.

$dir

Nom du répertoire sélectionné.

$reldir

Nom du répertoire sans l段nformation de chemin.

$path

Chemin absolu.

$relpath

Chemin relatif du fichier ou du répertoire

$mpaths

Liste des fichiers et répertoires sélectionnés actuellement

$inputstr{<msg>}

Chaîne de caractères qui est entrée dans une fenêtre de message.

$parentdir

Répertoire Parent (../).

Note:
Les entrées de l弾xtension Shell sont également disponibles en tant que menus de contexte dans léditeur de CodeBlocks.

2.8Browse Tracker

Browse Tracker est une extension qui aide à naviguer parmi les fichiers récemment ouverts dans CodeBlocks. La liste des fichiers récents est sauvegardée dans un historique. Le menu 歎ue 担uivi de Navigation 探out Effacer permet d弾ffacer l檀istorique.

Dans les différents 弛nglets vous pouvez naviguer entre les divers éléments des fichiers récemment ouverts en utilisant l弾ntrée de menu 歎ue 担uivi de Navigation 但ller en arrière/Aller en avant ou en utilisant les raccourcis claviers Alt-Gauche/Alt-Droit. Le menu de suivi de navigation est également accessible dans les menus de contexte. Les marqueurs sont enregistrés dans un fichier de mise en page <projectName>.bmarks

Quand on développe du logiciel, on passe souvent d置ne fonction à une autre implémentée dans différents fichiers. L弾xtension de suivi de navigation vous aidera dans cette tâche en vous montrant l弛rdre dans lequel ont été sélectionnés les fichiers. Vous pouvez alors naviguer confortablement dans les différents appels de fonctions.

L弾xtension permet même de naviguer entre les marqueurs de chaque fichier de léditeur de CodeBlocks. La position du curseur est mémorisée pour chacun des fichiers. Vous pouvez poser ces marqueurs en utilisant le menu 歎ue Suivi de Navigation Activer le marquage de navigation ou en sélectionnant une ligne avec le bouton gauche de la souris. Une marque est alors posée dans la marge gauche. Avec les menus 歎ue 担uivi de Navigation 樽arque précédente/Marque suivante ou les raccourcis Alt-up/Alt-down vous pouvez naviguer entre les différents marques posées dans un fichier. Si vous voulez naviguer dans un fichier avec des marques triées en fonction du numéro de lignes, choisissez simplement le menu 歎ue 担uivi de Navigation 探rier les marques de navigation .

En choisissant 脱ffacer la marque de navigation le marqueur de la ligne sélectionnée est supprimé. Si un marqueur est posé sur une ligne, le fait d誕ppuyer pendant 1/4 de seconde sur le bouton gauche de la souris tout en appuyant sur la touche Ctrl effacera le marqueur de cette ligne. Avec le menu 脱ffacer toutes les marques de navigation ou avec un Ctrl-clic gauche sur toute ligne non marquée, vous remettez à 0 tous les marqueurs d置n fichier.

Le paramétrage de l弾xtension peut être configuré via le menu 単aramètres Éditeur 達rowse Tracker .

Note:
NdT : certains menus ou affichages ne sont pas traduits car l誕uteur de l弾xtension n誕 pas marqué certaines chaînes comme étant traduisibles
Mark Style
(Styles des marques) Les marques de navigation sont affichées par défaut comme des dans la marge. Avec le choix 達ook_Marks elles seront affichées en tant que marque par une flèche bleue dans la marge. L弛ption 派ide supprime l誕ffichage des marques.
Toggle Browse Mark key
Les marques peuvent être activées ou supprimées soit par un simple clic avec le bouton gauche de la souris soit avec un clic-gauche tout en maintenant la touche Ctrl enfoncée.
Toggle Delay
Durée pendant laquelle le bouton gauche de la souris est enfoncé pour entrer dans le mode de marquage de navigation.
Clear All BrowseMarks
(Effacer toutes les marques) tout en maintenant enfoncée la touche Ctrl soit par simple clic soit par double clic sur le bouton gauche de la souris.

La configuration de l弾xtension est enregistrée dans votre répertoire application data dans le fichier default.conf. Si vous utilisez la fonctionnalité des profils (ou personnalité) de CodeBlocks la configuration est alors lue dans votre fichier <personality>.conf.

2.9Support de SVN

Note:
NdT : Cette extension est traduite ici, mais est obsolète. Vous avez donc de grandes chances de ne plus la trouver.

Le support du système de contrôle de version SVN est inclus dans l弾xtension CodeBlocks TortoiseSVN. Via le menu 探ortoiseSVN 単lugin settings vous pouvez configurer les commandes svn accessibles dans l弛nglet 棚ntegration .

Menu integration
Ajoute une entrée TortoiseSVN dans la barre de menu avec différents paramétrages.
Project manager
Active les commandes TortoiseSVN du menu de contexte de la gestion de projet.
Editor
Active les commandes TortoiseSVN du menu de contexte de léditeur.

Dans la configuration de l弾xtension vous pouvez choisir quelles sont les commandes svn qui sont accessibles dans le menu principal ou le menu de contexte. L弛nglet intégration fournit une entrée 脱dit main menu et 脱dit popup menu pour paramétrer ces commandes.

Note:
L脱xplorateur de fichiers dans CodeBlocks utilise différentes icônes superposées afin d段ndiquer létat de svn. Les commandes de TortoiseSVN sont incluses dans le menu de contexte.

2.10LibFinder

Si vous voulez utilisez des librairies dans votre application, vous devez configurer votre projet pour cela. Un tel processus de configuration peut être difficile et ennuyeux car chaque librairie peut utiliser un schéma d弛ptions particulier. Un autre problème est que cette configuration diffère entre les plates-formes ce qui résulte en des incompatibilités entre des projets Unix et Windows.

LibFinder propose deux fonctionnalités majeures :

2.10.1Recherche de librairies

La recherche des librairies est disponible via le menu 脱xtensions 鱈ibrary finder . Son but est de détecter les librairies installées sur votre système et d弾nregistrer les résultats dans la base de données de LibFinder (notez que ces résultats ne sont pas écrits dans les fichiers projets de CodeBlocks). La recherche commence par un dialogue où vous pouvez fournir un ensemble de répertoires où sont installées les librairies. LibFinder les analysera de façon récursive aussi, si vous ne savez pas trop où elles sont, vous pouvez sélectionner des répertoires génériques. Vous pouvez même entrer le disque complet dans ce cas là, le processus de recherche prendra plus de temps mais il détectera davantage de librairies (voir Figure2.11).


pict

Figure2.11: Liste de répertoires

Quand LibFinder est à la recherche de librairies, il utilise des règles spéciales pour détecter leur présence. Chaque ensemble de règle est situé dans un fichier xml. Actuellement LibFinder peut rechercher wxWidgets 2.6/2.8, CodeBlocks SDK et GLFW la liste sera étendue dans le futur.

Note:
Pour obtenir davantage de détails sur comment ajouter un support de librairie dans LibFinder, lisez dans les sources de CodeBlocks src/plugins/contrib/lib_finder/lib_finder/readme.txt.

Après avoir terminé l誕nalyse, LibFinder affiche les résultats (voir Figure2.12).


pict

Figure2.12: Résultats de recherche

Dans la liste, vous cochez les librairies qui doivent être enregistrées dans la base de données de LibFinder. Notez que chaque librairie peut avoir plus d置ne configuration valide et les paramétrages ajoutés en premier sont plutôt destinés à être utilisés lors de la génération de projets.

Au-dessous de la liste, vous pouvez sélectionner ce qu段l faut faire avec les résultats des analyses précédentes :

Ne pas effacer les résultats précédents
Cette option travaille comme une mise à jour des résultats existants Cela ajoute les nouveaux et met à jour ceux qui existent déjà. Cette option n弾st pas recommandée.
Seconde option (Effacer les résultats précédents des librairies sélectionnées)
effacera tous les résultats des recherches précédentes des librairies sélectionnées avant d誕jouter les nouveaux résultats. C弾st l弛ption recommandée.
Effacer toutes les configurations précédentes des librairies
quand vous sélectionnez cette option, la base de données de LibFinder sera effacée avant d馳 ajouter les nouveaux résultats. C弾st utile quand vous voulez nettoyer une base de données LibFinder contenant des résultats invalides.

Une autre option de ce dialogue est 辰onfigurer les Variables Globales . Quand vous cochez cette option, LibFinder essaiera de configurer des Variables Globales qui sont aussi utilisées pour aider à traiter les librairies.

Si vous avez pkg-config d段nstallé sur votre système (C弾st installé automatiquement sur la plupart des versions de systèmes linux) LibFinder proposera des librairies venant de cet outil. Il n弾st pas nécessaire de faire une analyse spécifique pour celles-ci elles seront automatiquement chargées au démarrage de CodeBlocks.

2.10.2Inclure des librairies dans les projets

LibFinder ajoute un onglet supplémentaire dans les propriétés d置n projet 鱈ibrairies Cet onglet montre les librairies utilisées dans le projet ainsi que celles connues de LibFinder. Pour ajouter une librairie dans votre projet, sélectionnez là dans le panneau de droite et cliquez sur le bouton <. Pour enlever une librairie d置n projet, sélectionnez la dans le panneau de gauche et cliquez sur le bouton > (voir Figure2.13).


pict

Figure2.13: Configuration de projet

Vous pouvez filtrer les librairies connues de LibFinder en fournissant un filtre de recherche. La case à cocher 但fficher comme un arbre permet de basculer antre des vues sans catégories et des vues avec catégories.

Si vous voulez ajouter une librairie qui n弾st pas disponible dans la base de données de LibFinder, vous pouvez utiliser le champ 鱈ibrairie inconnue . Notez que vous devriez entrer le 罵ibrary痴 shortcode (nom court, qui habituellement correspond au nom de variable globale) ou le nom de librairie dans pkg-config. Vous trouverez une liste de noms courts suggérés dans le Wiki de CodeBlocks dans Global Variables. L置sage de cette option n弾st recommandé que lorsqu弛n prépare un projet qui doit être généré sur d誕utres machines où ce type de librairie existe et y est correctement détectée par LibFinder. Vous pouvez accéder à une variable globale dans CodeBlocks comme :

$(#GLOBAL_VAR_NAME.include)

Cocher l弛ption 誰e pas configurer automatiquement indiquera à LibFinder qu段l ne devrait pas ajouter automatiquement les librairies lors de la compilation. Dans ce cas, LibFinder peut s段nvoquer depuis un script de génération. Un exemple d置n tel script est généré et ajouté au projet en appuyant sur 但jouter un script de génération manuel .

2.10.3Utilisation de LibFinder dans des projets générés par des assistants

Les assistants vont créer des projets qui n置tilisent pas LibFinder. Pour les intégrer avec cette extension, vous devrez mettre à jour manuellement les options de génération du projet. Ceci est facilement obtenu en enlevant tous les paramétrages spécifiques aux librairies et en ajoutant les librairies au travers de l弛nglet 鱈ibrairies dans les propriétés du projet.

De tels projets deviennent indépendants des plates-formes. Tant que les librairies utilisées sont dans la base de données de LibFinder, les options de génération du projet seront automatiquement mises à jour pour coïncider avec les paramétrages de librairie propres aux plates-formes.

2.11AutoVersioning

Une application de suivi de versions qui incrémente les numéros de version et de construction de votre application à chaque fois qu置n changement est effectué et l弾nregistre dans un fichier version.h avec des déclarations de variables faciles à utiliser. Possède également une option pour proposer des changements dans un style à la SVN, un éditeur de schémas de versions, un générateur de journal des changements, et bien d誕utres choses encore

2.11.1Introduction

L段dée de développer l弾xtension AutoVersioning est venue lors du développement d置n logiciel en version pre-alpha qui exigeait des informations de version et détat. Trop occupé par le codage, sans temps disponible pour maintenir la numérotation des versions, l誕uteur a décidé de développer une extension qui puisse faire le travail avec aussi peu d段nterventions que possible.

2.11.2Fonctionnalités

Voici résumée la liste des fonctions couvertes par l弾xtension :

2.11.3Utilisation

Aller simplement dans le menu 単rojet 但utoversioning . Une fenêtre popup comme celle-ci apparaîtra :


pict

Figure2.14: Configuration d置n projet pour Autoversioning

Quand on répond Oui au message de demande de configuration, la fenêtre principale de configuration d但utoVersioning s弛uvre pour vous permettre de paramétrer les informations de version de votre projet.

Après avoir configuré votre projet pour le versionnage automatique, les paramètres entrés dans la boîte de dialogue de configuration sont enregistrées dans le fichier de projet et un fichier version.h est créé. Pour le moment, chaque fois que vous entrez dans le menu 単rojet 但utoversioning , le dialogue de configuration qui apparaît vous permet déditer votre version de projet et les paramètres qui y sont liés, à moins que vous n弾nregistriez pas les nouveaux changements effectués par l弾xtension dans le fichier de projet.

2.11.4Onglets de la boîte de dialogue

2.11.4.1 Valeurs de Version

Ici vous entrez simplement les valeurs de version adéquates ou laissez l弾xtension Autoversioning le faire pour vous (see Figure2.15).

Version Majeure
Incrémenté de 1 quand le numéro mineur atteint son maximum
Version mineure
Incrémenté de 1 quand le numéro de génération dépasse la barrière de nombre de générations, la valeur étant remise à 0 quand il atteint sa valeur maximale.
Numéro de génération
(également équivalent à numéro de Release) - Incrémenté de 1 chaque fois que le numéro de révision est incrémenté.
Révision
Incrémenté aléatoirement quand le projet a été modifié puis compilé.

pict

Figure2.15: Configuration des Valeurs de Version

2.11.4.2 État

Quelques champs pour garder une trace de létat de votre logiciel avec une liste de valeurs prédéfinies usuelles (voir Figure2.16).

État du logiciel
Un exemple typique pourrait être v1.0 Alpha
Abréviation
Idem à létat du logiciel mais comme ceci : v1.0a

pict

Figure2.16: Configuration de lÉtat dans Autoversioning

2.11.4.3 Schéma

Vous permet déditer comment l弾xtension incrémentera les valeurs de version (voir Figure2.17).


pict

Figure2.17: Schéma de fonctionnement d但utoversioning

Valeur max pour numéro mineur
Valeur maximale que peut atteindre la valeur mineure. Une fois cette valeur atteinte, le numéro Majeur est incrémenté de 1 et à la compilation suivante le numéro mineur sera remis à 0.
Nombre max de générations
Quand cette valeur est atteinte, le compteur sera remis à 0 à la génération suivante. Mettre à 0 pour ne pas limiter.
Révision maximale
Comme Nombre max de générations. Mettre à 0 pour ne pas limiter.
Révision aléatoire maximale
Les révisions s段ncrémentent par un nombre aléatoire que vous décidez. Si vous mettez 1, les révisions s段ncrémenteront évidemment par 1.
Nombre de générations avant d段ncrémenter Mineur
Après des changements de code et des compilations avec succès, l檀istorique des générations s段ncrémente, et quand cette valeur est atteinte alors la valeur Mineure s段ncrémente.
2.11.4.4 Paramètres

Ici vous pouvez entrer certains paramètres du comportement d但utoversioning (voir Figure2.18).


pict

Figure2.18: Paramètres d但utoversioning

Auto-incrémente Majeur et Mineur
Laisse l弾xtension incrémenter ces valeurs en utilisant le schéma. Si non coché, seuls les numéros de génération et de Révision s段ncrémenteront.
Créer des déclarations de dates
Crée des entrées dans le fichier version.h avec des dates et un style de version à la Ubuntu.
Incrémentation automatique
Indique à l弾xtension d段ncrémenter automatiquement dès qu置ne modification est faite. Cette incrémentation interviendra avant la compilation.
Langage de l弾n-tête
Sélectionne le langage de sortie du fichier version.h
Interroger pour incrémenter
Si Incrémentation automatique est coché, on vous interroge alors avant la compilation (si des changements ont été effectués) pour incrémenter les valeurs de version.
Svn activé
Recherche dans le répertoire courant la révision Svn et la date puis génère les entrées correspondantes dans version.h
2.11.4.5 Journal des changements

Ceci vous permet d弾ntrer chaque changement effectué au projet afin de générer un fichier ChangesLog.txt (voir Figure2.19).


pict

Figure2.19: Journal des changements d但utoversioning

Afficher les changements quand la version s段ncrémente
Affichera une fenêtre popup dédition de journal quand la version est incrémentée.
Format du Titre
Un titre formaté avec une liste de valeurs prédéfinies.

2.11.5Inclusion dans votre code

Pour utiliser les variables générées par l弾xtension faire simplement #include<version.h>. Le code suivant est un exemple de ce qu弛n peut faire :

#include<iostream>
#include"version.h"

voidmain(){
std::cout<<AutoVersion::Major<<endl;
}

2.11.5.1 Sortie de version.h

Le fichier d弾n-tête généré. Voici un exemple sur un fichier en mode c++ :

#ifndefVERSION_H
#defineVERSION_H

namespaceAutoVersion{

//DateVersionTypes
staticconstcharDATE[]="15";
staticconstcharMONTH[]="09";
staticconstcharYEAR[]="2007";
staticconstdoubleUBUNTU_VERSION_STYLE=7.09;

//SoftwareStatus
staticconstcharSTATUS[]="Pre-alpha";
staticconstcharSTATUS_SHORT[]="pa";

//StandardVersionType
staticconstlongMAJOR=0;
staticconstlongMINOR=10;
staticconstlongBUILD=1086;
staticconstlongREVISION=6349;

//MiscellaneousVersionTypes
staticconstlongBUILDS_COUNT=1984;
#defineRC_FILEVERSION0,10,1086,6349
#defineRC_FILEVERSION_STRING"0,10,1086,6349\0"
staticconstcharFULLVERSION_STRING[]="0.10.1086.6349";

}
#endif//VERSION_h

En mode C c弾st la même chose qu弾n C++ mais sans le namespace:

#ifndefVERSION_H
#defineVERSION_H

//DateVersionTypes
staticconstcharDATE[]="15";
staticconstcharMONTH[]="09";
staticconstcharYEAR[]="2007";
staticconstdoubleUBUNTU_VERSION_STYLE=7.09;

//SoftwareStatus
staticconstcharSTATUS[]="Pre-alpha";
staticconstcharSTATUS_SHORT[]="pa";

//StandardVersionType
staticconstlongMAJOR=0;
staticconstlongMINOR=10;
staticconstlongBUILD=1086;
staticconstlongREVISION=6349;

//MiscellaneousVersionTypes
staticconstlongBUILDS_COUNT=1984;
#defineRC_FILEVERSION0,10,1086,6349
#defineRC_FILEVERSION_STRING"0,10,1086,6349\0"
staticconstcharFULLVERSION_STRING[]="0.10.1086.6349";

#endif//VERSION_h

2.11.6Générateur de journal des changements

Cette boîte de dialogue est accessible à partir du menu 単rojet 谷ournal des changements . Également si la case 尿fficher léditeur des changements quand la version s段ncrémente est cochée, une fenêtre s弛uvrira pour vous permettre d弾ntrer la liste des changements après une modification des sources du projet ou un évènement d段ncrémentation (voir Figure2.20).


pict

Figure2.20: Changements dans un projet

2.11.6.1 Résumé des Boutons
Ajouter
Ajoute une ligne à la grille de données
Éditer
Active les modifications de la cellule sélectionnée
Supprimer
Supprime la ligne courante de la grille de données
Enregistrer
Enregistre dans un fichier temporaire (changes.tmp) les données actuelles pour pouvoir effectuer plus tard les entrées dans le journal des changements
Écrire
Entre la grille de données dans le journal des changements
Annuler
Ferme simplement la boîte de dialogue sans rien faire d誕utre

Voici un exemple de sortie générée par l弾xtension dans le fichier ChangesLog.txt :

03September2007
releasedversion0.7.34ofAutoVersioning-Linux

Changelog:
-Fixed:pointerdeclaration
-Bug:blahblah

02September2007
releasedversion0.7.32ofAutoVersioning-Linux

Changelog:
-Documentedsomeareasofthecode
-Reorganizedthecodeforreadability

01September2007
releasedversion0.7.30ofAutoVersioning-Linux

Changelog:
-Editedthechangelogwindow
-Ifthechangelogwindowsisleaveblanknochanges.txtismodified

2.12Code statistics


pict

Figure2.21: Configuration de Code Statistics

Basée sur les caractéristiques d置n masque de configuration, cette simple extension détecte les pourcentages de codes, commentaires et lignes blanches d置n projet. Lévaluation se lance via la commande de menu 脱xtensions 辰ode statistics .

2.13Recherche de Code Source Disponible

Cette extension permet de sélectionner un terme dans léditeur et de rechercher ce terme à l誕ide du menu de contexte 坦echercher dans Koders dans la base de données du site [?]. La boîte de dialogue permet d誕jouter la possibilité de filtrer le langage et le type de licence.

Cette recherche en base de données vous aidera à trouver du code source originaire du monde entier en provenance d誕utres projets universitaires, de consortiums et d弛rganisations comme Apache, Mozilla, Novell Forge, SourceForge et bien d誕utres, qui peuvent être utilisés sans avoir à réinventer la roue à chaque fois. SVP, bien observer la licence du code source dans chaque cas individuel.

2.14Profilage de Code

Une interface graphique simple au Profileur GNU GProf.

2.15Extension Symbol Table

Cette extension permet de rechercher des symboles dans des fichiers objets et dans des librairies. Les options et le chemin d誕ccès au programme nm en ligne de commande sont définis dans l弛nglet des Options.


pict

Figure2.22: Configuration de Symbol Table

Cliquer sur 坦echercher démarre la recherche. Les résultats du programme NM sont alors affichés dans une fenêtre séparée nommée 担ymTabs Result. Les noms des fichiers objets et des librairies contenant les symboles sont listés avec comme titre 担ortie de NM.

3Expansion de Variables

CodeBlocks fait la différence entre plusieurs types de variables. Ces types peuvent servir à configurer l弾nvironnement de création d置n programme, mais aussi à accroître la maintenabilité et la portabilité. L誕ccès aux variables de CodeBlocks s弛btient grâce à $<name>.

Variables d脱nvironnement
sont configurées au démarrage de CodeBlocks. Elles peuvent modifier les variables d弾nvironnement du système telles que PATH. Cela peut être utile dans les cas où une variable d弾nvironnement spécifique est nécessaire à la création de projets. La configuration des variables d弾nvironnement dans CodeBlocks se fait à l誕ide de 単aramètres 脱nvironnement 歎ariables d弾nvironnement .
Variables internes
sont prédéfinies dans CodeBlocks, et peuvent être accédées via leurs noms (voir les détails dans Listing3.2).
Macros Commandes
Ce type de variables est utilisé pour contrôler le processus de génération. Pour de plus amples informations se référer à Listing3.4.
Variables Utilisateur
sont des variables définies par l置tilisateur qui peuvent être spécifiées dans les options de génération d置n projet. Ici vous pouvez, par exemple définir votre type de processeur comme une variable MCU et lui assigner une valeur correspondante. Puis entrer dans les options de compilation -mcpu=$(MCU), et CodeBlocks le remplacera automatiquement par le contenu. Par cette méthode, la configuration d置n projet peut être largement paramétrée.
Variables Globales
sont surtout utilisées pour créer CodeBlocks à partir des sources ou pour le développement d誕pplications wxWidgets. Ces variables ont une signification bien particulière. Par rapport à toutes les autres, si vous configurez de telles variables et partagez votre fichier projet avec d誕utres qui eux n弛nt *pas* configuré ces variables glogales (ou GV), CodeBlocks demandera à l置tilisateur de les configurer. C弾st un moyen pratique de d誕ssurer qu置n 誕utre développeur sait facilement ce qu段l doit configurer. CodeBlocks posera la question pour tous les chemins usuellement nécessaires.

3.1Syntaxe

CodeBlocks traite de façon équivalente, en tant que variables, les séquences de caractères suivantes dans les étapes de pré-génération, post-génération ou génération :

Les noms de variables doivent être composés de caractères alphanumériques et sont insensibles à la casse (minuscules-majuscules). Les variables commençant par un seul signe dièse (#) sont interprétées comme des variables utilisateur globales (voir les détails dans la Listing3.7). Les noms listés ci-dessous sont interprétés comme des types de variables internes.

Les variables qui ne sont ni de type utilisateur globales ni de type interne, seront remplacées par une valeur fournie dans le fichier projet, ou par une variable d弾nvironnement si ce dernier échoue.

Note:
Les définitions par-cible sont prioritaires par rapport aux définitions par-projet.

3.2Liste des variables internes

Les variables listées ci-dessous sont des variables internes à CodeBlocks. Elles ne peuvent pas être utilisés dans des fichiers sources.

3.2.1Espace de travail CodeBlocks

$(WORKSPACE_FILENAME), $(WORKSPACE_FILE_NAME), $(WORKSPACEFILE), $(WORKSPACEFILENAME)

Le nom de fichier de l弾space de travail courant (.workspace).

$(WORKSPACENAME), $(WORKSPACE_NAME)

Le nom de l弾space de travail qui est affiché dans l弛nglet Projets du panneau Gestion.

$(WORKSPACE_DIR), $(WORKSPACE_DIRECTORY), $(WORKSPACEDIR), $(WORKSPACEDIRECTORY)

Le répertoire où se trouve l弾space de travail.

3.2.2Fichiers et répertoires

$(PROJECT_FILENAME), $(PROJECT_FILE_NAME), $(PROJECT_FILE), $(PROJECTFILE)

Le nom de fichier du projet en cours de compilation.

$(PROJECT_NAME)

Le nom du projet en cours de compilation.

$(PROJECT_DIR), $(PROJECTDIR), $(PROJECT_DIRECTORY)

Le répertoire commun de plus haut niveau du projet en cours de compilation.

$(ACTIVE_EDITOR_FILENAME)

Le nom du fichier ouvert dans léditeur actif courant.

$(ACTIVE_EDITOR_LINE)

Retourne le numéro de ligne courant dans léditeur actif.

$(ACTIVE_EDITOR_COLUMN

Retourne le numéro de colonne courant dans léditeur actif.

$(ACTIVE_EDITOR_DIRNAME)

le répertoire contenant le fichier actif courant (relatif au chemin de plus haut niveau).

$(ACTIVE_EDITOR_STEM)

Le nom de base (sans extension) du fichier actif courant.

$(ACTIVE_EDITOR_EXT)

L弾xtension du fichier actif courant.

$(ALL_PROJECT_FILES)

Une chaîne contenant les noms de tous les fichiers du projet courant.

$(MAKEFILE)

Le nom de fichier du makefile.

$(CODEBLOCKS), $(APP_PATH), $(APPPATH), $(APP-PATH)

Le chemin de l段nstance courante de CodeBlocks en cours d弾xécution.

$(DATAPATH), $(DATA_PATH), $(DATA-PATH)

Le répertoire 恥artagé de l段nstance courante de CodeBlocks en cours d弾xécution.

$(PLUGINS)

Le répertoire des plugins (ou extensions) de l段nstance courante de CodeBlocks en cours d弾xécution.

$(TARGET_COMPILER_DIR)

Le répertoire d段nstallation du compilateur appelé aussi chemin maître.

3.2.3Cibles de génération

$(FOOBAR_OUTPUT_FILE)

Le fichier de sortie d置ne cible spécifique.

$(FOOBAR_OUTPUT_DIR)

Le répertoire de sortie d置ne cible spécifique.

$(FOOBAR_OUTPUT_BASENAME)

Le nom de base du fichier de sortie (sans chemin, sans extension) d置ne cible spécifique.

$(TARGET_OUTPUT_DIR)

Le répertoire de sortie de la cible courante.

$(TARGET_OBJECT_DIR)

Le répertoire objet de la cible courante.

$(TARGET_NAME)

Le nom de la cible courante.

$(TARGET_OUTPUT_FILE)

Le fichier de sortie de la cible courante.

$(TARGET_OUTPUT_BASENAME)

Le nom de base du fichier de sortie (sans chemin, sans extension) de la cible courante.

$(TARGET_CC), $(TARGET_CPP), $(TARGET_LD), $(TARGET_LIB)

L弛util de génération (compilateur, éditeur de liens, etc.) de la cible courante.

3.2.4Langue et encodage

$(LANGUAGE)

La langue du système en clair.

$(ENCODING)

L弾ncodage du système en clair.

3.2.5Heure et date

$(TDAY)

Date courante sous la forme AAAAMMJJ (par exemple 20051228)

$(TODAY)

Date courante sous la forme AAAA-MM-JJ (par exemple 2005-12-28)

$(NOW)

Heure courante sous la forme AAAA-MM-JJ-hh.mm (par exemple 2005-12-28-07.15)

$(NOW_L)

Heure courante sous la forme AAAA-MM-JJ-hh.mm.ss (par exemple 2005-12-28-07.15.45)

$(WEEKDAY)

Nom du jour de la semaine en clair (par exemple 樽ercredi)

$(TDAY_UTC), $(TODAY_UTC), $(NOW_UTC), $(NOW_L_UTC), $(WEEKDAY_UTC)

Ces types sont identiques aux précédents mais exprimés en temps universel TU.

$(DAYCOUNT)

Nombre de jours passés depuis une date arbitraire choisie comme origine (1er Janvier 2009). Utile comme dernier composant d置n numéro de version/génération.

3.2.6Valeurs aléatoires

$(COIN)

Cette variable simule un pile ou face (à chaque invocation) et retourne 0 ou 1.

$(RANDOM)

Un nombre positif aléatoire sur 16 bits (0-65535)

3.2.7Commandes du Système d弾xploitation

La variable est remplacée par la commande effective du Système d弾xploitation.

$(CMD_CP)

Commande de Copie de fichiers.

$(CMD_RM)

Commande de Suppression de fichiers.

$(CMD_MV)

Commande de Déplacement de fichiers.

$(CMD_MKDIR)

Commande de Création de répertoire.

$(CMD_RMDIR)

Commande de Suppression de répertoire.

3.2.8Évaluation Conditionnelle

$if(condition){clausesivraie}{clausesifausse}

Lévaluation Conditionnelle sera considérée comme vraie dans les cas suivants

Lévaluation Conditionnelle sera considérée comme fausse dans les cas suivants

Note:
Notez SVP que les variantes de syntaxe de variable %if(...) ou $(if)(...) ne sont pas supportées dans ce type de construction.

Exemple

Par exemple : vous utilisez plusieurs plateformes et vous voulez configurer différents paramètres en fonction du système d弾xploitation. Dans le code suivant, la commande de script [[]] est évaluée et la <commande> sera exécutée. Ce peut être utile dans une étape de post-génération.

[[if(PLATFORM==PLATFORM_MSW){print(_T("cmd/c"));}else{print(_T("sh"));}]]<commande>

3.3Expansion de script

Pour une flexibilité maximale, vous pouvez imbriquer les scripts en utilisant l弛pérateur [[]] en tant que cas particulier d弾xpansion de variable. Les scripts imbriqués ont accès à toutes les fonctionnalités standard disponibles pour les scripts et se comportent comme des 巴ackticks (ou apostrophes inversées) de bash (à l弾xception de l誕ccès au namespace de CodeBlocks). En tant que tels, les scripts ne sont pas limités à la production de sorties de type texte, mais peuvent aussi manipuler des états de CodeBlocks (projets, cibles, etc.).

Note:
La manipulation détats de CodeBlocks devrait être implémentée dans des étapes de pré-générations plutôt que dans un script.

Exemple avec Backticks

objdump-D素ind.-name⋆.elf>name.dis

L弾xpression entre 巴ackticks (ou apostrophes inversées) retourne une liste de tous les exécutables *.elf des sous-répertoires. Le résultat de cette expression peut être utilisé directement par objdump. Au final, la sortie est redirigée vers un fichier nommé name.dis. Ainsi, des processus peuvent être automatisés simplement sans avoir recours à aucune boucle.

Exemple utilisant un Script

Le texte du script est remplacé par toute sortie générée par votre script, ou ignoré en cas d弾rreur de syntaxe.

Comme lévaluation conditionnelle est exécutée avant l弾xpansion de scripts, lévaluation conditionnelle peut être utilisée pour les fonctionnalités de type pré-processeur. Les variables internes (et les variables utilisateur) sont étendues en sortie de scripts, aussi on peut référencer des variables dans les sorties d置n script.

[[print(GetProjectManager().GetActiveProject().GetTitle());]]

insère le titre du projet actif dans la ligne de commande.

3.4Macros Commandes

$compiler

Accède au nom de l弾xécutable du compilateur.

$linker

Accède au nom de l弾xécutable de léditeur de liens.

$options

Flags du Compilateur

$link_options

Flags de léditeur de liens

$includes

Chemins des include du compilateur

$c

Chemins des include de léditeur de liens

$libs

Librairies de léditeur de liens

$file

Fichier source (nom complet)

$file_dir

Répertoire du fichier source sans le nom de fichier ni son extension.

$file_name

Nom du fichier source sans les informations de chemin ni l弾xtension.

$exe_dir

Répertoire du fichier exécutable sans le nom de fichier ni son extension.

$exe_name

Nom du fichier exécutable sans les informations de chemin ni l弾xtension.

$exe_ext

Extension de l弾xécutable sans les informations de chemin ni le nom du fichier.

$object

Fichier objet

$exe_output

Fichier exécutable de sortie

$objects_output_dir

Répertoire de sortie des fichiers objets

3.5Compilation d置n fichier unique

$compiler$options$includes-c$file-o$object

3.6Édition de fichiers objets en exécutable

$linker$libdirs-o$exe_output$link_objects$link_resobjects$link_options$libs

3.7Variables globales du compilateur

3.8Synopsis

Travailler en tant que développeur sur un projet reposant sur des librairies tierces impose un certain nombre de tâches répétitives inutiles, comme configurer des variables de génération dépendantes du système de fichier local. Dans le cas de fichiers projets, une attention toute particulière doit être apportée afin déviter de diffuser une copie modifiée localement. Si on n馳 prend pas garde, cela peut se produire facilement après avoir changé par exemple un flag de génération pour obtenir une version de type release.

Le concept de variable globale du compilateur est une nouvelle solution unique à CodeBlocks qui adresse ce problème. Les variables globales du compilateur vous permettent de configurer un projet une seule fois, avec n段mporte quel nombre de développeurs utilisant n段mporte quel système de fichiers pour compiler et développer ce projet. Aucune information locale ne nécessite dêtre changée plus d置ne fois.

3.9Noms et Membres

Les variables globales du compilateur dans CodeBlocks se distinguent des variables par-projet par la présence d置n signe dièse en tête. Les variables globales du compilateur sont structurées ; chaque variable consiste en un nom et un membre optionnel. Les noms sont définissables librement, alors que les membres sont construits dans l脱nvironnement Intégré de Développement (IDE). Bien que vous puissiez choisir n段mporte quoi comme nom en principe, il est recommandé de reproduire des identificateurs connus de packages communément utilisés. Ainsi, le nombre d段nformations que l置tilisateur doit fournir est minimisé. Léquipe de CodeBlocks fourni une liste de variables recommandées pour divers packages connus.

Le membre base correspond à la même valeur que celle de la variable utilisée sans membre (alias).

Les membres include et lib sont par défaut des aliases pour base/include et base/lib, respectivement. Cependant, l置tilisateur peut les redéfinir si une autre configuration est souhaitée.

Il est généralement recommandé d置tiliser la syntaxe $(#variable.include) plutôt que son équivalent $(#variable)/include, car elle fournit une flexibilité accrue tout en étant fonctionnellement identique (voir Listing3.12.1 et Figure3.1 pour plus de détails).

Les membres cflags et lflags sont vides par défaut et peuvent être utilisés pour fournir une possibilité de remplir un ensemble consistant unique de flags compilateur/éditeur de liens pour toutes les générations sur une machine donnée. CodeBlocks vous permet de définir des membres de variables utilisateur en complément de ceux prédéfinis.


pict

Figure3.1: Variables Globales d脱nvironnement

3.10Contraintes

CodeBlocks détectera les cas de définitions récursives les plus évidentes (ce qui peut arriver par accident), mais il ne fera pas d誕nalyse en profondeur de tous les cas possibles abusifs. Si vous entrez n段mporte quoi, alors vous obtiendrez n段mporte quoi; vous êtes avertis maintenant.

Exemples

Définir wx.include comme $(#wx)/include est redondant, mais parfaitement légal.

Définir wx.include comme $(#wx.include) est illégal et sera détecté par CodeBlocks.

Définir wx.include comme $(#cb.lib) qui est lui même défini comme $(#wx.include) créera une boucle infinie.

3.11Utilisation des Variables Globales du Compilateur

Tout ce que vous avez à faire pour utiliser des variables globales de compilateur c弾st de les mettre dans votre projet! Oui, c弾st aussi simple que cela.

Quand l脱nvironnement Intégré de Développement (IDE) détecte la présence d置ne variable globale inconnue, il vous demande d弾ntrer sa valeur. La valeur sera sauvegardée dans vos paramètres, ainsi vous n誕urez jamais besoin d弾ntrer deux fois l段nformation.

Si vous avez besoin de modifier ou de supprimer une variable plus tard, vous pourrez le faire depuis le menu des paramètres.

Exemple


pict

Figure3.2: Variables Globales

L段mage ci-contre montre à la fois les variables par-projet et globales. WX_SUFFIX est défini dans le projet, mais WX est une variable utilisateur globale.

3.12Ensembles de Variables

Parfois, vous voulez utiliser différentes versions d置ne même librairie, ou vous développez deux branches d置n même programme. Bien qu段l soit possible de gérer cela avec une variable globale de compilateur, cela peut devenir fastidieux. Dans ce cas, CodeBlocks supporte des ensembles de variables. Un ensemble de variables est une collection indépendante de variables, identifiée par un nom (les noms d弾nsemble ont les mêmes contraintes que les noms de variables).

Si vous souhaitez basculer vers un autre ensemble de variables, vous sélectionnez tout simplement un ensemble différent depuis le menu. Des ensembles différents n弛nt pas obligatoirement les mêmes variables, et des variables identiques dans différents ensembles n弛nt pas forcément les mêmes valeurs, ni même des membres utilisateurs identiques.

Un autre point positif à propos des ensembles est que si vous avez une douzaine de variables et que vous voulez obtenir un nouvel ensemble avec une de ces variables pointant vers un endroit différent, vous nêtes pas obligés de ré-entrer toutes les données à nouveau. Vous pouvez simplement créer un clone de l弾nsemble courant, ce qui dupliquera toutes vos variables.

Supprimer un ensemble supprimera également toutes les variables de cet ensemble (mais pas celles d置ne autre ensemble). L弾nsemble default est toujours présent et ne peut pas être supprimé.

3.12.1Mini-Tutoriel de membres utilisateur

Comme décrit auparavant, écrire $(#var.include) et $(#var)/include revient à la même chose par défaut. Aussi pourquoi donc écrire quelque chose d誕ussi non intuitif que $(#var.include)?

Prenons l弾xemple d置ne installation standard de Boost sous Windows. Généralement, vous vous attendriez à ce qu置n package fictif ACME ait ses fichiers include dans ACME/include et ses librairies dans ACME/lib. Optionnellement, il pourrait mettre ses entêtes (headers) dans un autre sous répertoire appelé acme. Ainsi après avoir ajouté les chemins corrects dans les options du compilateur et de léditeur de liens, vous pouvez vous attendre à #include<acme/acme.h> et éditer les liens avec libacme.a (ou quelque chose de ce genre).

Boost, cependant, installe les entêtes dans C:\Boost\include\boost-1_33_1\boost et ses librairies dans C:\Boost\lib par défaut. Il semble impossible d弛btenir ceci simplement sans devoir tout ajuster sur chaque nouveau PC, particulièrement si vous devez travailler sous Linux mais aussi avec un autre OS.

C弾st là que la véritable puissance des variables globales utilisateur se révèle. Quand vous définissez la valeur de la variable #boost, vous allez juste un cran plus loin que d檀abitude. Vous définissez le membre include comme C:\Boost\include\boost-1_33_1\boost et le membre lib comme C:\Boost\lib, respectivement. Votre projet utilisant $(#boost.include) et $(#boost.lib) travaillera comme par magie correctement sur tout PC sans aucune modifications. Vous n誕vez pas besoin de savoir pourquoi, vous ne voulez pas savoir pourquoi.

4Générer CodeBlocks à partir des Sources

4.1Introduction

Cet article décrit le processus de création des nightly builds (générations nocturnes !), et peut être utilisé comme un guide si vous voulez générer CodeBlocks vous-même. La description suivante est une séquence d誕ctions.

Afin de procéder à notre tâche de génération, nous aurons besoin de plusieurs outils. Créons d誕bord une liste d段ngrédients pour notre recette de cuisine.

4.1.1WIN32

Comme les développeurs de CodeBlocks génèrent CodeBlocks en utilisant GCC, nous ferons de même sous Windows. Le portage le plus facile et le plus propre est MinGW. C弾st le compilateur distribué avec CodeBlocks quand vous téléchargez le package officiel. Ici, on s弾n tiendra à la version 3.4.5, qui fonctionne bien.

D誕bord, une brève explication des composants de MinGW :

gcc-core
le coeur de la suite GCC
gcc-g++
le compilateur c++
mingw Runtime
l段mplémentation des librairies 排un time
mingw utils
plusieurs utilitaires (implémentation de petits programmes que GCC utilise lui-même)
win32Api
l但PI (Interface de Programmation d但pplication) pour créer des programmes Windows
binutils
plusieurs utilitaires utilisés dans l弾nvironnement de génération
make
le programme make de Gnu, ainsi vous pouvez générer à partir de fichiers make
GDB
le débogueur Gnu

Je vous suggère d弾xtraire (et d段nstaller pour GDB) le tout dans un répertoire C:\MinGW. Le reste de cet article supposera que c弾st là que vous l誕vez mis. Si vous avez déjà une installation de CodeBlocks qui a été fournie avec MinGW, je vous recommande malgré tout d段nstaller MinGW comme décrit ici. Un compilateur n誕 pas a être dans l誕rborescence d置n Environnement de Développement Intégré (IDE); ce sont deux choses bien distinctes. CodeBlocks le fournit avec les versions officielles afin que l置tilisateur standard n誕it pas à se préoccuper de ce genre de choses.

Vous pouvez avoir besoin d誕jouter le répertoire bin de votre installation MinGW à votre variable path. Un moyen simple de faire cela est d弾ntrer la commande suivante dans une fenêtre DOS :

setpath=%PATH%;C:\MinGW\bin;C:\MinGW\mingw32\bin;

4.1.2Système de génération initial

Sur [?] est disponible un fichier de description de projet CodeBlocks.cbp. Si vous chargez ce fichier dans CodeBlocks alors vous êtes en mesure de générer CodeBlocks à partir des sources. Tout ce dont vous avez besoin c弾st d置ne version de CodeBlocks déjà pré-générée.

Premièrement, téléchargez une version nightly. Vous pouvez faire votre sélection à partir de là ([?] rubrique Nightly Builds). Les versions nightly sont des versions Unicode, contenant le coeur et les plugins contributifs.

Ensuite, décompressez le fichier 7-zip dans n段mporte quel répertoire de votre choix. Si vous n誕vez pas 7-zip, vous pouvez le télécharger gratuitement depuis [?].

Maintenant, CodeBlocks nécessite une dll supplémentaire pour travailler correctement: la dll wxWidgets. Vous pouvez aussi la télécharger depuis le forum des nightly builds. Dézippez là simplement dans le même répertoire que celui où vous avez décompressé la version nightly de CodeBlocks. Il vous faut aussi la dll mingwm10.dll. Elle est normalement dans le répertoire bin de votre installation de MinGW. C弾st pourquoi il est important de s誕ssurer que le sous répertoire bin de votre installation MinGW est bien dans votre variable path.

Enfin, démarrer cette nouvelle génération d置ne nightly de CodeBlocks. Elle devrait trouver le compilateur MinGW qui vient dêtre installé.

4.1.3Système de Contrôle de Versions

Afin de pouvoir récupérer les dernières sources de CodeBlocks sources, nous avons besoin d段nstaller un système de contrôle de versions.

Les développeurs de CodeBlocks fournissent leurs sources par le biais du système de contrôle de versions [?]. Aussi, nous avons besoin d置n client pour accéder à leur dépôt svn des sources. [?] est un bon client pour Windows, facile d置tilisation, et qui est disponible gratuitement. Téléchargez le et installez le, en gardant tous les paramètres suggérés.

Maintenant, créez un répertoire où vous voulez, par exemple D:\projets\CodeBlocks. Faire un clic droit dans ce répertoire et choisir dans le menu popup : svn-checkout (ou SVN Extraire si vous avez installé la francisation de SVN). Dans la boîte de dialogue qui apparaît, entrez l段nformation suivante dans Url of Repository (URL du référentiel) :

svn://svn.berlios.de/codeblocks/trunk

et laissez les autres paramètres comme ils sont.

Maintenant, soyez patient pendant que TortoiseSVN récupère les sources les plus récentes du dépôt de CodeBlocks dans votre répertoire local. Oui ; toutes ces sources de CodeBlocks viennent chez vous !

Pour plus d段nformations sur le paramétrage de SVN, voir info dans SVN settings. Si vous n誕imez pas l段ntégration dans l弾xplorateur ou cherchez une solution inter-plateforme vous pouvez jeter un oeil sur RapidSVN..

4.1.4wxWidgets

[?] est une abstraction de plateforme qui fourni une API supportant de nombreuses choses comme une Interface Graphique Utilisateur (GUI), des sockets, fichiers, fonctionnalités de registres. En utilisant cette API, vous pouvez créer des programmes indépendants des plateformes.

CodeBlocks est une application wxWidgets (soit après : wx), ce qui signifie que pour exécuter CodeBlocks vous avez besoin des fonctionnalités wx. Cela peut se faire de deux façons. Soit par une .dll soit par une librairie statique. CodeBlocks utilise wx en tant que dll et cette dll peut aussi se télécharger depuis la section nightly builds du forum.

Néanmoins, si nous voulons générer une application wx, nous devons inclure les headers (ou en-têtes) des sources wx. Elles donnent au compilateur les informations sur les fonctionnalités de wx. En plus de ces fichiers de headers, notre application a besoin dêtre liée aux librairies d段mportation wx. Bien, voyons cela pas à pas.

Wx est fourni sous forme de fichiers sources dans un fichier zip, aussi, nous devons le générer par nous-mêmes. Nous avons déjà le compilateur MinGW, donc nous avons tous les outils nécessaires sous la main.

Dézippez maintenant les sources wx dans C:\Projets et ainsi nous aurons au final un répertoire wx de base comme celui-ci : C:\Projets\wxWidgets-2.8.9. Ensuite, dézippez les patchs (s段l y en a !) dans le même sous répertoire afin de remplacer les fichiers modifiés. Notez que nous allons référencer le répertoire wx de base à partir de maintenant comme <wxDir>

Maintenant, nous allons générer les wxWidgets. Voici comment faire :

Premièrement, assurez-vous que C:\MingGW\bin est dans votre variable path, car durant la génération quelques programmes résidant dans le répertoire MinGW\bin seront appelés. De plus, Make doit être en version 3.80 ou supérieure.

Il est temps maintenant de compiler les wxWidgets. Ouvrir une fenêtre de commande DOS et se placer dans le répertoire des wxWidgets :

cd<wxDir>\build\msw

Nous sommes maintenant au bon endroit. Nous allons d誕bord nettoyer les sources :

mingw32-make-fmakefile.gccSHARED=1MONOLITHIC=1BUILD=releaseUNICODE=1clean

Maintenant que tout est propre, nous pouvons compiler les wxWidgets :

mingw32-make-fmakefile.gccSHARED=1MONOLITHIC=1BUILD=releaseUNICODE=1

Cela prend un certain temps.

Pour générer une version debug, suivez ces étapes :

Bien, regardons maintenant dans le répertoire (<wxDir>\lib\gcc_dll). Les librairies d段mportation et les dll y sont visibles et il doit aussi y avoir un sous répertoire mswu\wx à cet endroit, contenant setup.h.

Bravo! Vous venez de générer les wxWidgets!

Faisons encore quelques tâches préliminaires complémentaires avant d誕ttaquer la compilation de CodeBlocks.

4.1.5Zip

Durant la génération de CodeBlocks, plusieurs ressources seront compressées dans des fichiers zip. Aussi, le processus de génération doit pouvoir accéder à un zip.exe. Nous devons télécharger ce zip.exe et le mettre quelque part dans notre path. MingW\bin est un bon endroit pour cela.

Vous pouvez depuis ce site (http://www.info-zip.org/pub/infozip/Zip.html) télécharger zip.exe gratuitement et ceci (http://switch.dl.sourceforge.net/sourceforge/infozip/zip232.zip) est un lien direct(32bit) vers la plus récente version au moment de la rédaction de cet article.

Une fois téléchargé, extraire simplement zip.exe vers l弾ndroit approprié.

4.1.6Générer Codeblocks

win32
Lancer update_revision.bat (NdT : n弾st plus dans les versions récentes !)
linux
Lancer update_revision.sh

Avec cette fonction la révision SVN de la génération Nightly est mise à jour dans les sources. On peut trouver ce fichier dans le répertoire principal des sources de CodeBlocks.

4.1.7WIN32

Maintenant, ouvrez le projet CodeBlocks.cbp dans CodeBlocks. Générez CodeBlocks en lançant le processus de génération. Après la création de CodeBlocks, les fichiers générés avec les informations de débogage se trouvent dans le sous-répertoire devel. En appelant le fichier batch update.bat depuis le répertoire source, les fichiers sont copiés dans le sous-répertoire output et les informations de débogage sont retirées.

4.1.8LINUX

Quand on génère sous Linux, les étapes suivantes sont nécessaires. Dans cet exemple nous supposons que vous êtes dans le répertoire source de CodeBlocks. Sous Linux, la variable d弾nvironnement PKG_CONFIG_PATH doit être configurée. Le répertoire <prefix> doit contenir le fichier codeblocks.pc. (NdT : Cette section ne semble pas à jour avec les dernières versions)

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<prefix>

shupdate_revsion.sh
./bootstrap
./configure--with-contrib=[all|nomsdespluginsséparéspardesvirgules]
--prefix=<install-dir>
make
makeinstall(root)

4.1.9Générer des plugins

Ensuite, configurer les variables globales via 単aramètres 歎ariables Globales .

Variable cb

Pour la variable cb, entrer dans base le répertoire source de CodeBlocks.

<prefix>/codeblocks/src

Variable wx

Pour la variable wx, entrer dans base le répertoire source de wx (par ex.

C:\Programme\wxWidgets-2.8.9

Dans le projet CodeBlocks, la variable projet WX_SUFFIX est configurée à u. Cela signifie que pendant la génération de CodeBlocks lédition de liens se fera avec la librairie *u_gcc_custom.dll. Les générations officielles des nightly de CodeBlocks seront liées avec gcc_cb.dll. Pour ce faire, il faut faire comme suit.

gcc_<VENDOR>.dll

La variable <VENDOR> est donnée dans le fichier de configuration compiler.gcc. Pour s誕ssurer qu置ne distinction soit possible entre une génération officielle de CodeBlocks et celles effectuée par vous-mêmes, la configuration par défaut VENDOR=custom ne devrait pas être changée.

Après, créez l弾space de travail ContribPlugins.cbp via 単rojet 竪énérer l弾space de travail . Puis exécutez une fois de plus update.bat.

4.1.10Linux

Configurez la variable wx à l誕ide des variables globales.

base
/usr
include
/usr/include/wx-2.8
lib
/usr/lib

déboguer CodeBlocks. Démarrez CodeBlocks dans le répertoire output et chargez CodeBlocks.cbp en tant que projet. Entrer le point d誕rrêt et démarrer par 奪ebug and Run (f8).

4.1.11Plugins Contributifs

Ceci nous amène à la dernière tâche préliminaire. Le code de CodeBlocks peut se diviser en 2 parties principales : le coeur avec les plugins internes et les plugins contributifs. Vous devez toujours d誕bord générer la partie coeur/plugins internes avant de générer la partie contributive.

Pour générer la partie interne, Vous pouvez utiliser le fichier de projet de CodeBlocks que vous trouverez dans : <cbDir>\src\CodeBlocks.cbp. Notre répertoire maître de CodeBlocks sera maintenant mentionné comme <cbDir>. Un espace de travail est quelque chose qui regroupe plusieurs projets entre eux. La génération des plugins contributifs se trouve dans

<cbDir>\src\ContribPlugins.workspace

Mais, créons un espace de travail contenant l弾nsemble. Plaçons cet espace de travail dans le répertoire maître <cbDir> (NdT : là où il y a déjà CodeBlocks.cbp et ContribPlugins.workspace). Utiliser simplement un éditeur de texte normal et créer un fichier dont le nom est CbProjects.workspace puis le remplir avec le contenu suivant (NdT : le fichier ci-dessous est différent de la version originale anglaise, car mis à jour au moment de la traduction. En fait, il s誕git tout simplement du fichier ContribPlugins.workspace auquel on a changé le titre du Workspace (3ème ligne), ajouté une ligne, la 4ème, pour générer en tout premier le projet CodeBlocks.cbp et déplacé l弛ption active=1) :

<?xmlversion="1.0"encoding="UTF-8"standalone="yes"?>
<CodeBlocks_workspace_file>
<Workspacetitle="Workspace">
<Projectfilename="CodeBlocks.cbp"active="1"/>
<Projectfilename="plugins\contrib\AutoVersioning\AutoVersioning.cbp"/>
<Projectfilename="plugins\contrib\BrowseTracker\BrowseTracker.cbp"/>
<Projectfilename="plugins\contrib\Cccc\Cccc.cbp"/>
<Projectfilename="plugins\contrib\CppCheck\CppCheck.cbp"/>
<Projectfilename="plugins\contrib\codesnippets\codesnippets.cbp"/>
<Projectfilename="plugins\contrib\codestat\codestat.cbp"/>
<Projectfilename="plugins\contrib\copystrings\copystrings.cbp"/>
<Projectfilename="plugins\contrib\Cscope\Cscope.cbp"/>
<Projectfilename="plugins\contrib\devpak_plugin\DevPakPlugin.cbp"/>
<Projectfilename="plugins\contrib\DoxyBlocks\DoxyBlocks.cbp"/>
<Projectfilename="plugins\contrib\dragscroll\dragscroll.cbp"/>
<Projectfilename="plugins\contrib\EditorTweaks\EditorTweaks.cbp"/>
<Projectfilename="plugins\contrib\envvars\envvars.cbp"/>
<Projectfilename="plugins\contrib\source_exporter\Exporter.cbp"/>
<Projectfilename="plugins\contrib\byogames\byogames.cbp"/>
<Projectfilename="plugins\contrib\headerfixup\headerfixup.cbp"/>
<Projectfilename="plugins\contrib\help_plugin\help-plugin.cbp"/>
<Projectfilename="plugins\contrib\HexEditor\HexEditor-win.cbp"/>
<Projectfilename="plugins\contrib\IncrementalSearch\IncrementalSearch.cbp"/>
<Projectfilename="plugins\contrib\keybinder\keybinder.cbp"/>
<Projectfilename="plugins\contrib\cb_koders\cb_koders.cbp"/>
<Projectfilename="plugins\contrib\lib_finder\lib_finder.cbp">
<Dependsfilename="plugins\contrib\wxSmithContribItems\wxSmithContribItems.cbp"/>
</Project>
<Projectfilename="plugins\contrib\MouseSap\MouseSap.cbp"/>
<Projectfilename="plugins\contrib\NassiShneiderman\NassiShneiderman.cbp"/>
<Projectfilename="plugins\contrib\profiler\cbprofiler.cbp"/>
<Projectfilename="plugins\contrib\regex_testbed\RegExTestbed.cbp"/>
<Projectfilename="plugins\contrib\symtab\symtab.cbp"/>
<Projectfilename="plugins\contrib\ThreadSearch\ThreadSearch.cbp">
<Dependsfilename="plugins\contrib\wxSmithContribItems\wxSmithContribItems.cbp"/>
</Project>
<Projectfilename="plugins\contrib\wxSmithContribItems\wxSmithContribItems.cbp">
<Dependsfilename="plugins\contrib\wxSmith\wxSmith.cbp"/>
</Project>
<Projectfilename="plugins\contrib\wxSmith\wxSmith.cbp"/>
<Projectfilename="plugins\contrib\wxSmithAui\wxSmithAui.cbp">
<Dependsfilename="plugins\contrib\wxSmith\wxSmith.cbp"/>
</Project>
<Projectfilename="tools\cb_share_config\cb_share_config.cbp"/>
</Workspace>
</CodeBlocks_workspace_file>

Nous utiliserons cet espace de travail pour générer l弾nsemble de CodeBlocks.

4.1.12Générer l弾nsemble de CodeBlocks

Nous sommes arrivés à létape finale ; notre but ultime. Lancer l弾xécutable de CodeBlocks depuis notre téléchargement de génération nightly. Choisir Ouvrir dans le menu Fichier et rechercher l弾space de travail que nous venons de créer puis l弛uvrir. Soyez un peu patient pendant que CodeBlocks analyse le tout, puis CodeBlocks vous demandera d弾ntrer 2 variables globales, ces variables globales indiqueront à la version nightly de CodeBlocks où trouver les wxWidgets (rappelez-vous : fichiers header et librairies) et où trouver .... CodeBlocks, ce qui est nécessaire aux plugins contributifs qui ont besoin de savoir (ainsi que pour tout plugin créé par un utilisateur) où est le sdk (fichiers d弾ntêtes (headers) de CodeBlocks) are. Dans notre cas, ces valeurs sont :

wx
<wxDir> répertoire de base des wxWidgets.
cb
<cbDir>/src répertoire contenant les sources de CodeBlocks.

Aller maintenant dans le Menu Projet et choisissez (re)générer l弾space de travail, et allez faire un tour. Regardez comment CodeBlocks est en train de générer CodeBlocks.

Une fois la génération terminée, ouvrez une fenêtre console dans <cbDir>/src et lancez la commande update.bat. Cela transfèrera tout ce qui est utile depuis <cbDir>/src/devel vers <cbDir>/src/output. En plus, cela supprimera tous les symboles de déboguage. Cette étape est très importante - ne l弛ubliez jamais.

Vous pouvez maintenant copier la dll wx à la fois dans ce répertoire output et dans devel.

Vous pouvez alors fermer CodeBlocks. Rappelez-vous, nous étions avec la version nightly téléchargée ?

Il est temps de tester la nouvelle. Dans le répertoire output, lancez CodeBlocks.exe. Si tout s弾st bien passé, vous avez généré votre propre nightly de CodeBlocks faite maison.