Kdevelop et SFML

Olivier K., 20 mars 2016

Kdevelop est l’IDE pour KDE. C’est un bel outil qui semble simple d’utilisation. Mais dès que l’on veut lancer un projet un peu plus poussé qu’afficher « Hello world ! » dans un terminal, on se rend compte qu’il faut connaître un premier outil indispensable : CMake.

Kdevelop

Version Kdevelop de référence pour cet article : 4.7.

CMake

Kdevelop permet de développer en C++ avec les outils CMake https://cmake.org/ pour construire les programmes.

Augmenter ses connaissances sur CMake est indispensable pour mieux utiliser l’IDE.

Les bases de l’utilisation

Il permet de faire des applications pour KDE, en QT ou en mode basic pour le C++.

Utiliser une norme récente de C++

Bien que le compilateur GCC (version > 4.9) supporte les normes récentes de C++, Kdevelop ne les utilise pas pour autant par défaut et on se retrouve avec des impossibilités de compilation (ex emblématique : la fonction std::to_string() qui convertit un type numérique en type chaîne de caractères. Cela n’est possible que depuis la norme 2011 de C++, avant il fallait faire une fonction maison.)

Solution : ajouter cette ligne dans le fichier CMakeList.txt avant la ligne add_executable :

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
...
add_executable(nom_exécutable main.cpp)

c++14 : pour la norme 2014, c++11 : pour la norme 2011. Si vous ne mettez rien, ce sera la norme 98.

Configurer un lanceur

Tout ce qui a été fait jusqu’ici permet de compiler le code, il faut maintenant pouvoir l’exécuter.

Aller dans le menu : Exécuter -> configurer les lanceurs

Une fenêtre s’affiche :

Sélectionner le projet (normalement, il y a le projet et un répertoire Global).

Cliquer sur le bouton "Ajouter une nouvelle configuration de lancement" et choisir la configuration qui porte le nom du programme.

Valider sans modifier les options par défaut et c’est bon.

Simple and Fast Multimedia Library (SFML)

SFML offre une interface simple vers les différents composants de votre PC, afin de faciliter le développement de jeux ou d’applications multimedia. Elle se compose de cinq modules : système, fenêtrage, graphisme, audio et réseau.

Présentation tirée du site officiel : http://www.sfml-dev.org/index-fr.php

Intégrer SFML dans Kdevelop

Installer le paquets SMFL

sudo apt-get install libsfml-dev et normalement, les paquets network2, system2, graphic2, audio2 et window2 vont s’installer également.
On peut aussi installer libsmfl-doc pour jouir de la doc même sans être connecté. Il existe aussi des paquets pour python et python3 car SFML est multi-langages et multi-plate-formes.

Modifier CMakeList.txt

Après la ligne add_executable , ajouter :

add_executable(nom_exécutable main.cpp)
...
target_link_libraries(nom_exécutable -lsfml-audio -lsfml-graphics -lsfml-window -lsfml-system -lsfml-network)

Évidemment, vous n’êtes pas obligé de lier toutes les bibliothèques SFML à votre projet.

Page de test

Il suffit de reprendre le code présenté sur le site SFML :

#include <SFML/Graphics.hpp>

int main(int argc, char **argv) {
 
   sf::RenderWindow window(sf::VideoMode(800, 600, 32), "Ma premiere fenetre SFML ! ");
       // Start the game loop
   while (window.isOpen())
   {
       // Process events
       sf::Event event;
       while (window.pollEvent(event))
       {
           // Close window : exit
           if (event.type == sf::Event::Closed)
               window.close();
       }
       // Clear screen
       window.clear();
       // Update the window
       window.display();
   }
   
   return EXIT_SUCCESS;
}

Compiler, lancer, si une fenêtre s’affiche à l’écran alors c’est gagné...

Conclusion

Après ce rapide tour sur Kdevelop, les options choisies permettent de développer un projet en C++ et SFML (par exemple un petit RPG) sans buter sur des problèmes de compilation liés à l’intégration des bibliothèques SFML ou à une norme C++ mal définie.