Outils pour utilisateurs

Outils du site

A PCRE internal error occured. This might be caused by a faulty plugin

allegro:install_netbeans

Ce tutoriel est assez long et compliqué à mettre en œuvre, il demande quelques connaissances du Shell Linux et du développement sous Windows.\\ Cet article est basé sur un projet Allegro, mais peut fonctionner avec n'importe quel projet C/C++. ===== À propos de Netbeans ===== Netbeans est un EDI multilangage et multiplateforme très performant : gestion de projets, coloration syntaxique, auto complétion, ... et qui permet entre autre de compiler un projet en C sur différents hôtes à partir du même poste, et aussi de déboguer sur ce poste le code exécuté sur l'hôte distant. Il est clair que c'est une fonctionnalité très intéressante quand on souhaite produire un code portable et pouvoir le tester sans avoir à changer de poste. Ça évite les décisions du genre : coder sur une architecture d'abord, porter le code ensuite. Netbeans est capable de partager le code via NFS, SMB et SSH mais a besoin dans tous les cas de SSH pour appeler le compilateur. La seule contrainte et que le système distant doit être d'architecture UNIX (GNU/Linux, Solaris, Mac, BSD, ...). Dans ce tutoriel le cas abordé sera un système hôte Windows et un système distant GNU/Linux via SSH uniquement. Pour les autres configurations, référez vous au [[http://netbeans.org/kb/docs/cnd/remotedev-tutorial.html|tutoriel Netbeans (en)]]. ===== Installation et configuration du système hôte : Windows ===== Nous allons installer MinGW, Java, Netbeans et un serveur Xorg. ==== Installation de MinGW ==== //Note: Si vous avez CodeBlock, vous disposez certainement déjà de MinGW, dans **C:\Program Files\CodeBlocks\MinGW**, si vous avez aussi MSYS et make.exe, passez directement au paragraphe suivant.// Netbeans n'est pas distribué avec un compilateur, vous devez l'installer vous même. Netbeans n'est capable (actuellement à la v7.1.1) que de gérer le compilateur GNU (Cygwin et MinGW) ou des compilateurs exotiques qui ne nous intéressent pas. Comme Cygwin demande un environnement UNIX emulé installé sur la machine de l'utilisateur, on va s'orienter vers [[http://mingw.org/|MinGW]] qui est un port pour windows de la suite GCC. [[https://sourceforge.net/downloads/mingw|Installateur MinGW]] : Installez au moins le compilateur C et installez **MSYS** (important pour avoir la commande make).\\ Je recommande l'installation dans le répertoire proposé par défaut (**C:\MinGW**) car Netbeans sera alors capable de le détecter. Récupérez Allegro compilé pour MinGW : [[https://github.com/liballeg/allegro5/releases|Allegro 5.x.x]] Et extrayez-le à la racine de votre disque **C:\allegro** ==== Installation de Java ==== Netbeans a besoin de Java pour fonctionner. Si vous ne disposez pas encore de Java (en général présent si vous avez le dossier **C:\Program Files\Java**) installez [[http://www.java.com/fr/|la dernière version du JRE]]. //Facultatif : Vous pouvez télécharger le JDK plutôt que le JRE si vous souhaitez programmer en JAVA.// ==== Installation de Netbeans ==== Rendez-vous sur [[http://netbeans.org/downloads/index.html|la page de téléchargement]], elle propose automatiquement la dernière version de Netbeans. Il existe plusieurs paquets Netbeans : un installateur Windows ou un Zip portable, à vous de voir.\\ De plus après un certain temps (pour traduire) la communauté propose une version en Français. Il existe aussi différentes distributions de Netbeans, en fonction de l'utilisation, le paquet contiendra déjà les modules qui vous intéressent : prenez une version qui contient le module C/C++.\\ Sachez qu'un gestionnaire de greffons est intégré à Netbeans, et que si plus tard vous souhaitez disposer du module PHP par exemple, pas besoin de télécharger la distribution complète, rendez-vous simplement dans le menu **Tools -> Plugins** ==== Installation d'un serveur Xorg ==== Pour afficher le résultat graphique de notre programme exécuté sur le serveur GNU/Linux, on va rediriger les commandes vers notre poste Windows mais il est incapable de les interpréter. On va devoir installer un port du serveur graphique de GNU/Linux sur notre poste de travail. Cygwin est un système GNU/Linux émulé complet, il est bien plus qu'un port de Xorg, c'est un port de GNU/Linux sous Windows 8-O.\\ De ce fait, il est assez lourd et demande la connaissance du //shell// pour pouvoir configurer Xorg. Téléchargez et exécutez setup-x86_64.exe depuis [[http://cygwin.com/install.html]], cliquez sur **Suivant** jusqu'à la fenêtre avec la grande arborescence, sélectionnez pour installation les paquets suivants :\\ xorg-server xinit xhost X-start-menu-icons xterm openssh inetutils mesa-demo\\ //Facultatif : installez aussi **mintty** qui est un terminal natif win32, bien mieux que xterm car il fonctionne sans serveur Xorg.// **Démarrez le serveur X11**, dans le menu Démarrer -> "**Cygwin-X**" -> "**XWin Server**" Dans le Xterm qui s'ouvre, tapez : <code bash> xhost.exe + ip.du.serveur.linux </code> Cette commande autorise le serveur distant à utiliser Xorg, il faudra retaper cette commande à chaque lancement de Xorg. ===== Installation et configuration du système hôte : GNU/Linux ===== Il faut installer GCC, GDB ainsi que les headers de la libC et des commandes make et cmake.\\ Sous les distribs debian-like les paquets sont **build-essential**, **gdb**, **make** et **cmake**. Il faut installer **sshd**, le serveur SSH.\\ Sous les distribs debian-like c'est le paquet **openssh-server**.\\ On doit éditer le fichier **/etc/ssh/sshd_config** et mettre l'option **X11Forwarding** à //yes//. Sous debian cette option est à yes par défaut. Faites **/etc/init.d/sshd restart** pour prendre en compte la modification. //Facultatif : Nous pouvons créer un utilisateur de connexion pour Netbeans grâce à la commande **adduser**.// Nous allons maintenant installer Allegro. Sous debian et autres distributions à packages deb, les paquets à installer sont **liballegro5.2 liballegro5-dev liballegro-acodec5.2 liballegro-acodec5-dev liballegro-audio5.2 liballegro-audio5-dev liballegro-dialog5.2 liballegro-dialog5-dev liballegro-image5.2 liballegro-image5-dev liballegro-physfs5.2 liballegro-physfs5-dev liballegro-ttf5.2 liballegro-ttf5-dev liballegro-video5.2 liballegro-video5-dev allegro5-doc** Si votre distribution ne propose pas de paquet pour allegro5, la compilation est aisée. ===== Configuration de Netbeans ===== ==== Ajout de l'hôte ==== Nous allons devoir configurer Netbeans pour compiler sous les 2 OS. Créez un projet C/C++, Netbeans devrait normalement proposer MinGW, sinon il vous demandera où est le compilateur, et il faudra lui indiquer le dossier bin (qui contient entre autres **gcc.exe**). Maintenant sur la gauche de l'interface, vous avez un onglet vertical "**Services**" qui contient une arborescence. Cliquez-droit sur "**C/C++ Build Hosts**" -> "Add New Host...". Renseignez l'ip, puis le login. Le mot de passe vous sera demandé à la première connexion (c'est à dire au clic sur suivant).\\ Netbeans va scanner les dossiers du //PATH// à la recherche des commandes gcc, g++, gdb, make, ... Vous devriez obtenir :{{ :allegro:netbeans_hosts.png?nolink& |}} ==== Configuration du Projet ==== Sur la gauche de l'interface, vous avez un onglet vertical "**Projects**" qui contient une arborescence dont la racine est votre projet.\\ Cliquez-droit dessus -> "**Set Remote Build Host**" vous permet de changer d'hôte, ensuite dans le même menu contextuel, cliquez sur "**Properties**", pour configurer le projet en fonction de l'hôte choisi. === Pour l'hôte local :=== * **Build** -> **C Compiler** -> **Include Directories** : **C:/allegro/include** * **Build** -> **Linker** -> **Additional Library Directories** : **C:/allegro/lib** * **Build** -> **Linker** -> **Libraries** -> **Add Library** : * En **Debug** : **liballegro-5.0.7-monolith-md-debug.a** * En **Release** : **liballegro-5.0.7-monolith-md.a** * Pour les **deux** cibles :\\ **libopengl32.a**\\ **libwinmm.a**\\ **libgdi32.a**\\ **libshlwapi.a**\\ **libpsapi.a**\\ **libole32.a** Nous ne compilons pas en statique car à cause de Direct3D, on est obligé de compiler avec g++ et ça génère pas mal d'erreurs :-( \\ Prenez le [[allegro:install_msvs10#hello_world|helloworld de l'article sur MSVC]], appuyez sur **F11** et si ça compile, c'est fini pour la configuration ! Pour exécuter le programme, il vous faudra 3 dlls :\\ **allegro-5.0.7-monolith-md-debug.dll** dans le répertoire **bin** d'Allegro\\ **libgcc*.dll** et **libstdc++.dll** dans le répertoire **bin** de MinGW === Pour l'hôte distant :=== N'oubliez pas de **changer d'hôte** !! Dans les propriétés de la cible, cliquez sur **Manage Configurations...**\\ Cliquez deux fois sur **New** pour faire apparaître deux nouvelles cible que vous pouvez renommer //Linux_Debug// et //Linux_Release// par exemple. Sélectionner les nouvelles cibles et, si vous avez installé allegro dans **/usr** ou **/usr/local**, il suffit de mettre : * **Build** -> **Linker** -> **Libraries** -> **Add Library** : **allegro** * En **Debug** : **Build** -> **C Compiler** -> **Development Mode** : **Debug** * **Run** -> **Environment** Ajoutez les deux variables suivantes : * **DISPLAY** -> ip.du.poste.windows:0.0 * **LIBGL_ALWAYS_INDIRECT** -> **1** N'oubliez pas de [[allegro:install_netbeans#installation_d_un_serveur_xorg|démarrer votre serveur Xorg]] :!: \\ Appuyez sur **F6** et ça devrait compiler, la fenêtre exécutée à distance s'affiche, tout marche ^_^ Voilà ce que vous devez obtenir (cliquez pour agrandir) : {{ :allegro:netbeans_helloworld.png?direct&200 |}} ===== Pour finir ===== ==== Débogage à distance ==== Sélectionnez l'hôte distant, dans le helloworld placez un **point d'arrêt** (breakpoint) (en cliquant sur le numéro de ligne dans la gouttière à gauche, c.f. image précédente) à la ligne déclarant la variable **display**. Lancez le débogage (Ctrl+F5) : le programme est envoyé sur le serveur, il est compilé puis **gdb** est contrôlé à distance par Netbeans, il y a plus qu'à cliquer sur //step in// pour avancer dans l'exécution.\\ Le résultat graphique est affiché sur votre écran, Tout se fait de manière très simple et très fluide. Pas besoin de lancer une lourde machine virtuelle ni d'avoir à déplacer les sources, recompiler, et se balader d'une machine à l'autre. ==== Performances ==== Notre système actuel n'est pas très performant, en effet, Allegro utilisant OpenGL, le code est exécuté sur le serveur avant d'être envoyé à notre serveur Xorg.\\ Mais on a fait ça pour déboguer, pas pour jouer, si c'est ce que vous souhaitez, regardez [[http://www.virtualgl.org]], mais ça sort du cadre de cet article. ==== Résolution des problèmes ==== === Je n'ai pas d'affichage === Vérifiez d'abord que vous avez bien lancé Xorg et que vous avez autorisé l'IP de l'hôte à l'utiliser.\\ Vérifiez que les variables d'environnement dans les propriétés du projet, à **Run** sont justes. Si ça ne marche toujours pas, vérifiez votre pare-feu Windows, il bloque certainement les communications externes de Xorg.\\ Je travaille avec un serveur en Lan, je ne sais pas ce que ça donne avec un serveur internet et un pare-feu physique (genre Box internet). === GDB plante === Si GDB se plaint de ne pas pouvoir contrôler le terminal, dans les propriétés du projet, à **Run**, mettez **Console Type** -> **Standard Output**. === Autres Problèmes === Si vous rencontrez un problème dont je ne parle pas dans cet article, ou si vous avez une amélioration à me proposer, envoyez-moi un mél\\ {{:mail.gif?nolink&|}}

allegro/install_netbeans.txt · Dernière modification: 2018/03/01 12:19 par mrhide