mardi 18 mai 2010

Netbeans et CMake

Nombreux sont ceux qui demandent le support de Netbeans dans CMake. Je me demandais également comment intégrer CMake dans un développement utilisant Netbeans. En fait, la réponse est simple : CMake n'est pas capable de créer des projets Netbeans, mais ce dernier est capable d'importer des projets CMake. Il suffisait de se poser la question différemment, comme souvent, pour obtenir la réponse.

Pour importer un projet CMake, il suffit de créer un nouveau projet en choisissant d'importer un projet à partir de sources existantes, puis de sélectionner le mode de configuration automatique (en ayant bien pensé à supprimer les éventuels Makefiles qui auraient pu être générés). Un Makefile et un projet sont créés.

Par la suite, si des modifications sont faites dans CMakeLists.txt (ajout de fichier, de librairies, etc), il suffit d'aller faire un clic droit sur le projet dans Netbeans, puis de choisir Reparse Project dans Code Assistance (oui,  j'ai laissé mon environnement en anglais). Le projet est alors mis à jour en conséquence.

Plutôt simple, non ?

2 commentaires:

  1. Bonjour,

    Sais tu s'il est possible de créer un projet qui compile en dehors du répertoire contenant les sources ("out of source builds"). J'utilise cela tout le temps pour éviter de polluer le répertoire de sources avec des fichiers temporaires mais quand je crée un projet NetBeans à partir de la manip que tu décris, je me retrouve avec une configuration de type "in-source builds".

    J'ai essayé avec le mode de génération Custom mais rien n'y fait. Je continue à chercher mais si tu as la réponse je suis preneur.

    Merci d'avance.

    Gerald

    RépondreSupprimer
  2. J'ai trouvé, netbeans a été modifié fin 2010 pour inclure cette fonctionnalité qui devrait être incluse dans la prochaine version (7.0). Pour l'instant, c'est disponible uniquement dans la version de développement.

    Référence : http://netbeans.org/bugzilla/show_bug.cgi?id=175374
    Note : la beta 7.0 ne contient pas la modification.

    RépondreSupprimer