web-dev-qa-db-fra.com

Importer un projet CMake dans Eclipse CDT

J'ai un projet CMake natif et je souhaite utiliser le fichier Eclipse IDE avec celui-ci afin de faciliter mon développement en fournissant des fonctions de complétion automatique, etc. Je n'arrive pas à trouver comment importer le projet CMake dans Eclipse.

PS: Je suis ouvert aux suggestions d’autres IDE qui fonctionnent bien avec CMake. 

24
rajat

KDevelop est un génial IDE avec un excellent support CMake.

Quant à Eclipse - lancez ceci:

cd <project_dir>
cmake -G "Eclipse CDT4 - Unix Makefiles" ./

Cela produira le projet Eclipse pour vous.

34
arrowd

En développant la réponse de arrowd pour Eclipse:

Tout d'abord, choisissez un répertoire pour les fichiers CMake. Je préfère conserver mes espaces de travail Eclipse dans ~/workspaces et le code source dans ~/src. Les données dont j'ai besoin pour construire ou tester le projet sont placées dans les sous-répertoires du répertoire de l'espace de travail du projet. Je suggère donc de faire de même pour CMake.

En supposant que votre espace de travail et vos dossiers source s'appellent someproject, faites:

cd ~/workspaces/someproject
mkdir cmake
cd cmake
cmake -G "Eclipse CDT4 - Unix Makefiles" ~/src/someproject

Ensuite, dans votre espace de travail Eclipse, faites:

Fichier> Importer ...> Général> Projets existants dans l'espace de travail

Vérifiez Sélectionnez le répertoire racine et choisissez ~/workspaces/someproject/cmake. Assurez-vous que Copier les projets dans l’espace de travail n’est PAS coché.

Cliquez sur Terminer et vous avez un projet CMake dans votre espace de travail.

Deux choses à noter:

  • J'ai utilisé cmake pour le sous-répertoire de l'espace de travail, mais vous pouvez utiliser le nom de votre choix.
  • Si vous apportez des modifications à votre configuration de construction (telle que l'édition Makefile.am), vous devrez réexécuter la dernière commande pour qu'Eclipse puisse prendre en compte les modifications.
20
user149408

Je viens d’apprendre que le générateur de projet CDT de CMake semble ne pas être maintenu et qu’il a causé divers problèmes, en particulier, semble-t-il, avec les versions ultérieures d’Eclipse (dont j’avais moi aussi ma part).

Il est recommandé d'utiliser cmake4Eclipse (disponible sur le marché Eclipse), qui utilise CMakeLists.txt comme seule source de vérité. Cela vous permet également de garder l’arborescence source séparée de votre espace de travail.

  • Dans Eclipse, sélectionnez Fichier> Nouveau> Projet C.
  • Entrez un nom de projet et choisissez la racine de votre arborescence source comme emplacement du projet.
  • Sélectionnez Exécutable> Projet vide comme type de projet et acceptez la chaîne d'outils par défaut.
  • Cliquez sur Terminer pour créer un projet CMake dans votre espace de travail.
2
user149408

Une solution simple sur mon bureau: 

  1. Dans Eclipse: New -> New C/C++ Project -> Empty or Existing CMake Project, choisissez un nom de projet (par exemple, projet).
  2. Copiez tous les fichiers de l’ancien répertoire dans le nouveau (chemin d’accès à votre projet).
1
Yushan Zhang

Faites ce qui suit:

mkdir debug (ou version, ou tout autre nom)

cd debug
cmake -G "Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_Eclipse_GENERATE_SOURCE_PROJECT=TRUE -DCMAKE_Eclipse_MAKE_ARGUMENTS=-j3 -DCMAKE_Eclipse_VERSION=4.1 ../

Assurez-vous de définir la bonne version d'Eclipse

Puis ouvrez le dossier depuis Eclipse (Open Projects)

0
Nadav B

En bref, seul le générateur CDT est actuellement une option viable. Pourquoi? Tout simplement parce qu’Eclipse doit obtenir les définitions, les chemins d’inclusion et les fichiers du préprocesseur inclus dans la construction. Sinon, nous finirions par tout indexer, mal, sans que les macros correctes soient définies. Si vous avez un coup de pouce dans votre repo, ou un arbre de moyenne ou grande taille, tout indexer ne fonctionnera tout simplement pas dans le monde réel - pas avec la rapidité et la fiabilité de l'indexeur d'Eclipse de toute façon. Puisque la plupart des gens veulent probablement utiliser Ninja pour les builds ces jours-ci (qui veut attendre plus de 30 secondes pour une compilation chaude, juste pour voir ce qui est sale?), Cela exclut le seul moyen d'importer cette information via les fichiers Make actuellement pris en charge, à moins que vous ne souhaitiez générer deux systèmes de construction distincts chaque fois que vous le configurez, l'automatisation deviendrait un réel problème (étant donné que cmake se réexécutera lorsque les listes seront modifiées).

Eclipse Photon propose une nouvelle option pour importer directement des projets cmake. Cependant, à ce stade, je dirais que cela semble pratiquement inutile pour autre chose que des projets triviaux, car il ne semble pas y avoir de moyen d'importer un répertoire de construction déjà configuré, ou n'importe où pour définir des variables et des arguments qui sont passés à cmake . Je ne sais pas encore comment cette fonctionnalité fonctionne réellement, mais il semblerait qu'Eclipse doit analyser la hiérarchie de CMakeLists, en suivant la logique pour voir quels appels add_subdirectory () sont effectués et ce que le préprocesseur définit set, qui est apparemment une approche sans avenir, étant donné que nous avons le mode serveur cmake pour cela, et que cela nécessitera sans doute la réimplémentation de la quasi-totalité d’un analyseur de langage cmake dans Eclipse pour que cela fonctionne.

Jusqu'ici, la seule solution viable qui semble répondre aux exigences du monde réel semble être d'utiliser le générateur cmake CDT. Il peut obtenir les informations mentionnées ci-dessus directement auprès de cmake et les écrire dans le fichier .cproject. Comme mentionné précédemment, il n'est pas vraiment maintenu et repose sur un modèle obsolète pour le projet .c, ce qui pose certains problèmes.

Mes propres exigences minimales pour le support de cmake sont les suivantes:

  • Possibilité d'importer un projet déjà configuré. Les systèmes de construction volumineux utilisent souvent des scripts pour transmettre de nombreuses variables à cmake sur la ligne de commande.
  • Seul ce qui fait partie du système de construction doit être indexé.
  • Il doit fonctionner avec des constructions hors de l'arbre source.
  • Pour que l'indexation fonctionne, vous devez utiliser les chemins de définition et d'inclusion du préprocesseur à partir du système de génération.
  • Doit fonctionner avec le générateur Ninja (c.-à-d. Aucun fichier Make généré).

Je ne vois pas comment faire quoi que ce soit ci-dessus avec quoi que ce soit à l'exception du générateur CDT pour le moment, et le seul moyen de parvenir à une solution efficace et raffinée nécessite soit un piratage du générateur de cmake, soit un post-traitement du projet généré. sélectif sur ce qui est indexé (c'est-à-dire pas tous CMAKE_SOURCE_DIRECTORY). Ceci est un autre hack (puisque cmake n’a aucun moyen d’attacher des tâches post-configuration à l’étape de configuration, nous devons lancer un processus et surveiller le cmake parent pour qu’il se termine. C’est une décision délibérée de la part de cmake. les développeurs apparemment, et peut-être à juste titre)

J'apprécierais vraiment vraiment l'information d'une meilleure approche. L’état de prise en charge de cmake dans Eclipse est assez sombre pour un outil supposé être destiné au développement C++. L'indexeur (du moins lorsqu'il n'est pas affecté par des blocages réguliers nécessitant le redémarrage d'Eclipse) est en fait l'un des meilleurs, et Eclipse est un très bon environnement pour parcourir le code.

0
kdm