L’IDE CodeBlocks pour StockFish

Compiler StockFish sous Windows avec l’Environnement de Développement Intégré (IDE) CodeBlocks

Un Environnement de Développement Intégré (IDE) est préférable par rapport à la compilation manuelle de StockFish dans l’article précédent sur MinGW car l’installation et la configuration seront plus simples et les outils de développement seront intégrés et accessibles directement par menus ou la barre d’outils.

Vous n’aurez pas à modifier le PATH dans Windows pour ajouter les chemins de MinGW.

Une version récente de MinGW compatible avec l’IDE est installée par le setup.

Le choix de l’IDE CodeBlocks (CB)

  • gratuit (licence GNU GPL v3) : pas de Carte Bleue nécessaire,
  • simple, stable et puissant : GUI du niveau d’un Microsoft Visual C++,
  • introduction en français sur Wikipedia,
  • supporte MinGW C++ 4.7.1,
  • maintenu récemment : version 12.11 signifie novembre 2012,
  • ouvert avec le langage puissant de macros Squirrel,
  • cours complet gratuit en français pour les débutants sur le C++ : CB est cité au chapitre 2.

Télécharger CB

Pour Windows 2000 / XP / Vista / 7, il y a deux setups préfixés par MinGW :

Cliquer sur Sourceforge.net associé à codeblocks-12.11mingw-setup_user.exe car on souhaite télécharger le setup dans StockFish{CodeBlocks\Setup et non pas dans C:\Program Files\. Le volume important de téléchargement 100 MB s’explique par l’intégration de MinGW.

"Teach Yourself C++ lesson 0 - install and setup code::blocks"
Les débutants en C++ pourront suivre les vidéos des leçons suivantes en anglais.

Installer CB dans Windows

Comme le setup est dans StockFish{CodeBlocks\Setup, depuis l’installation de Git, on a maintenant l’habitude d’installer le programme dans StockFish\CodeBlocks{Prog.

Destination Folder : (en supposant que l'utilisateur courant s'appelle "Chess" sinon adapter le chemin)

Remplacer "C:\Program Files\CodeBlocks" par
C:\Users\Chess\Documents\StockFish\CodeBlock{Prog

Ignorer l'avertissement : "Cannot create shortcut for all users."
Click "OK" (CB n'est installé que pour l'utilisateur Windows courant).

Créer le projet StockFish dans CB et configurer son type

Lancer CodeBlocks.exe

Compilers auto-detection
Current default compiler : GNU GCC Compiler

Cliquer sur le menu de CodeBlocks "File" > "New" > "Project..."
Dans la boite de dialogue (dlg) "New from template"
Double click "Console application"

StockFish est un moteur de jeu d’Echecs UCI qui nécessite un GUI comme Arena. Cela veut dire que SF n’a pas de GUI dans son exécutable. C’est un programme qui peut se lancer dans l’invite de commande (command prompt) de Windows : voir Parlez-vous UCI ? On appelle ce type de programme une application console (Console application).

Configurer la console application StockFish dans CB

Dlg "Console application" : please select the (programming) language you want to use.
garder la sélection "C++" (choix par défaut)
Click "Next"

Project title : StockFish

Folder to create project in : C:\Users\Chess\Documents\
(se placer dans le répertoire parent de StockFish)

Project filename : StockFish.cbp (l'extension de fichier signifie CodeBlocks Project)

Resulting filename : C:\Users\Chess\Documents\StockFish\StockFish.cbp

Click "Next"
Compiler : GNU GCC Compiler (choix par défaut inchangé)

Ajouter les fichiers code source dans le projet SF

Dans la fenêtre de gauche "Projects", s’ouvre l’espace de travail : Workspace > StockFish > Sources.

Par défaut, CB crée le fichier code source C:\Users\Chess\Documents\StockFish{main.cpp
Les débutants en C++ pourront voir comment on affiche "Hello world!".
C’est le premier programme que l’on apprend à écrire quand on découvre un langage de programmation.
Voir les leçons 0 et 1 en vidéo ci-dessus concernant le langage de programmation C++.

Effacer le programme principal généré automatiquement par CB lors de la création du projet :

Etant donné que l’affichage de "Hello world!" n’a rien à voir avec un moteur UCI,
on n’a pas besoin du programme principal généré par CB à la création du projet.
Sélectionner dans l’arborescence projet (treeview) Workspace > StockFish > Sources > main.cpp
Menu contextuel "Remove from project"
Noter que le fichier main.cpp est effacé du projet StockFish mais pas du disque dur.
On pourra effacer ce fichier main.cpp depuis le gestionnaire de fichiers de Windows.
(Attention : ne pas effacer C:\Users\Chess\Documents\StockFish\Source\src\main.cpp géré par Git
mais C:\Users\Chess\Documents\StockFish{main.cpp créé par CB.

Ajouter les fichiers code source existant (en particulier main.cpp) dans le projet SF :

Cliquer avec le bouton droit de la souris (Right-click) sur Workspace > StockFish :
menu contextuel "Add Files..." ou menu "Project" > "Add Files..."
Descender l’arborescence en cliquant sur "Source/src" géré par Git.
Multi-sélectionner (Shift+Click) tous les fichiers code source ayant l’extension .cpp et les headers .h
(Attention : ne pas sélectionner le fichier texte Makefile)

Une fois tous les fichiers code source ajoutés dans le projet, double cliquer sur main.cpp. Cela va ouvrir une nouvelle fenêtre d’édition du code source. Dans un programme C++, le point d’entrée principal ou programme principal est main.cpp ci-dessous sélectionné sur la gauche dans Workspace > StockFish > Sources > Source > src. C’est le premier fichier code source à consulter pour entrer dans le fonctionnement du logiciel.

Dans la fenêtre "Logs & others" entre la fenêtre principale et la barre de status, on peut lire dans l’onglet "Build log" les traces de compilation du projet. La mention "0 errors, 0 warnings" indique que la compilation s’est bien passée. A vous d’en faire de même !

Compiler SF dans CB


Dans la barre d’outils de CB, sélectionner :
Build target : Release (pour la version optimisée à la place de Debug pour la mise au point)

Cliquez sur le bouton de la roue dentée jaune (info-bulle "Build") de la barre d’outils ou menu "Build" > "Build" (Ctrl+F9).

Selon la dernière version que vous avez clonée du GitHub, vous pouvez obtenir dans l’onglet "Build log" de la fenêtre au-dessus de la barre de status de CB :
(trace de compilation)
Output size is 825.50 KB

Cet exécutable de SF se trouve dans C:\Users\Chess\Documents\StockFish{bin{Release
La taille de l’exécutable peut différer par rapport à la taille ci-dessus et/ou par rapport à la taille de l’exécutable du SF officiel.

Pour une première prise de connaissance avec CB, on a laissé les choix par défaut concernant les options d’optimisation du compilateur C++. On pourra ultérieurement affiner ces options en se basant sur la référence du Makefile et revoir le rôle du fichier code source benchmark.cpp

Notons que les fichiers objets intermédiaires de compilation sont dans C:\Users\Chess\Documents\StockFish{obj\Release\Source\src selon la cible choisie Release ou Debug.

La nightly build de la dernière version est compilée avec toutes les optimisations souhaitées par l’équipe de SF. Elle est disponible, pour tous les systèmes d’exploitation ciblés, sur le site Stockfish Development Versions avec l’auteur et un résumé de sa modification sans avoir à utiliser Git.

Les versions de développement de SF sont générées automatiquement s’il y a des modification dans la branche maître du GitHub du projet. Elles sont compilés avec gcc 4.7/mingw sur Ubuntu 12.10 et Windows. Comme on peut le voir en parcourant les dates récentes, le projet est très actif.

Configurer SF dans le GUI Arena

L’exe de SF généré en local sur votre disque dur est opérationnel même s’il sera optimisable dans le futur.
Dans Arena Chess GUI 3.0, menu "Engines" > "Manage"

2ème onglet "Details"
Click "New"
Sélectionner C:\Users\Chess\Documents\StockFish\bin{Release\StockFish.exe

1er onglet "General"

Name : StockFish (s'il existe déjà, nommer éventuellement celui-ci StockFishDev)
Author : Marco Costalba
Command Line : C:\Users\Chess\Documents\StockFish\bin{Release\StockFish.exe
Command Line Parameters : (aucun)
Country : Italy
Type : UCI
Logo file : C:\Users\Chess\Documents\StockFish\stockfish-3-win\Logos\stockfish_100x50.gif
Click "Apply"

Un nouvel gladiateur avec des écailles de poisson est prêt à entrer dans l’arène échiquéenne.

Posté le 12 mai 2013 par Matt