Importer un projet CMake dans Eclipse CDT
j'ai un natif CMake projet, et je veux utiliser le Eclipse IDE avec elle de sorte qu'il rend mon développement plus facile en fournissant Auto-complet et et autres fonctionnalités. Je n'arrive pas à trouver comment importer le projet a CMake dans Eclipse.
PS: je suis ouvert aux suggestions pour d'autres IDE qui fonctionnent bien avec CMake.
5 réponses
Elaboration de la réponse d'arrowd pour Eclipse:
tout d'Abord, choisissez un répertoire pour les fichiers CMake. Je préfère garder mon Eclipse espaces de travail dans ~/workspaces
et le code source ~/src
. Les données dont j'ai besoin pour construire ou tester le projet vont dans des sous-dirs Du dir de l'espace de travail du projet, donc je suggère de faire la même chose pour CMake.
en supposant que votre espace de travail et vos dossiers source sont nommés someproject
:
cd ~/workspaces/someproject
mkdir cmake
cd cmake
cmake -G "Eclipse CDT4 - Unix Makefiles" ~/src/someproject
puis, dans votre espace de travail Eclipse, faire:
Fichier > Importer... > Généralités > projets existants dans L'espace de travail
Case Sélectionner le répertoire racine et choisissez ~/workspaces/someproject/cmake
. Assurez-vous que copier les projets dans l'espace de travail N'est pas cochée.
Cliquez sur Terminer Et Vous avez un projet CMake dans votre espace de travail.
Deux choses à noter:
- j'ai utilisé
cmake
pour l'espace de travail sous répertoire, mais vous pouvez utiliser un nom de votre choix. - si vous apportez des modifications à votre configuration de compilation (comme éditer
Makefile.am
), vous aurez besoin de relancer la dernière commande pour que Eclipse récupère les modifications.
je viens d'apprendre que le générateur du projet CDT de CMake semble être maintenues et a causé divers problèmes-surtout, semble-t-il, avec les versions ultérieures D'Eclipse (dont j'ai eu ma part aussi).
la recommandation est d'utiliser cmake4eclipse (disponible sur Eclipse Marketplace), qui utilise CMakeLists.txt
comme seule source de vérité. Il vous permet également de garder l'arbre des sources séparé de votre espace de travail.
- dans Eclipse, sélectionnez le Fichier > Nouveau > Projet C.
- Saisissez le nom du projet et choisissez la racine de votre arborescence des sources comme emplacement du projet.
- Sélectionner Executable > Vide comme le type de projet, et accepter la chaîne d'outils par défaut.
- Cliquez sur Terminer, et vous avez un projet CMake dans votre espace de travail.
Une solution simple sur mon bureau:
- Dans eclipse:
New -> New C/C++ Project -> Empty or Existing CMake Project
, choisir un nom de projet (par exemple projet). - Copier tous les fichiers de l'ancien répertoire vers le nouveau (chemin d'accès à votre projet).
en bref, seul le générateur CDT est actuellement une option viable. Pourquoi? Tout simplement parce Qu'Eclipse doit obtenir le préprocesseur définit, inclut les chemins, et quels fichiers sont inclus dans la compilation à partir de quelque part. Sinon, nous finirions par tout indexer, et mal, sans que les macros correctes soient définies. Si vous avez boost dans votre repo, ou un arbre de taille moyenne ou grande, indexer tout ne va tout simplement pas fonctionner dans le monde réel - pas avec la vitesse et la fiabilité de l'indexeur D'Eclipse de toute façon. Puisque la plupart des gens veulent probablement utiliser Ninja pour construire ces jours-ci (qui veut attendre 30+ secondes pour une construction chaude juste pour voir ce qui est sale?), ce qui exclut la seule façon d'importer ces informations via les makefiles qui sont actuellement pris en charge, à moins que vous ne vouliez générer deux systèmes de compilation séparés à chaque fois que vous configurez, ce qui rendrait l'automatisation une véritable douleur (étant donné que cmake se ré-exécute lorsque les listes changent).
dans le Photon Eclipse il y a une nouvelle option pour importer directement les projets cmake. Cependant, à ce stade, je dirais que cela semble surtout inutile pour autre chose que des projets triviaux, puisqu'il ne semble pas y avoir de moyen d'importer un répertoire de compilation 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 en fait, mais il semblerait Qu'Eclipse doive analyser la hiérarchie des listes Cmakel, en suivant la logique pour voir ce que les appels add_subdirectory() sont faits, et ce que préprocesseur définit sont définis, ce qui est apparemment une approche sans avenir, étant donné que nous avons le mode serveur cmake pour exactement cela, et il faudra sans doute réimplémenter la quasi-totalité d'un analyseur de langage cmake dans Eclipse pour faire ce travail.
jusqu'à présent, 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 susvisées directement à partir de l'intérieur de cmake, et l'écrire dans le .cproject fichier. Comme nous l'avons déjà mentionné, il n'est pas vraiment tenu à jour et repose sur un modèle désuet .cproject, ce qui provoque certains problèmes.
Mes propres exigences minimales pour cmake en charge sont:
- Possibilité d'importer un déjà configuré projet. Les grands systèmes de construction utilisent souvent des scripts pour passer de nombreuses variables dans cmake sur la ligne de commande.
- seul ce qui fait partie du système de construction doit être indexé.
- il doit fonctionner avec hors de la source l'arbre construit.
- doit utiliser préprocesseur définit et inclure les chemins du système de construction pour avoir l'indexation de travail.
- doit fonctionner avec le Générateur Ninja (c.-à-d. pas de makefiles générés).
Je ne vois pas comment faire tout ce qui précède avec quoi que ce soit d'autre que le générateur de CDT à l'heure actuelle, et la seule façon de parvenir à une solution de travail et raffiné nécessite soit un peu de piratage au générateur de cmake, ou le post-traitement du produit .cproject d'être sélectif sur ce que est indexée (ie. pas tout CMAKE_SOURCE_DIRECTORY). Il s'agit d'un autre hack (puisque cmake n'a aucun moyen d'attacher les tâches post-configure dans l'étape de configuration, nous devons bifurquer un processus, et surveiller le cmake parent pour la terminaison. C'est une décision délibérée au nom de la cmake développeurs apparemment, et peut-être à juste titre)
j'apprécierais certainement des informations sur une meilleure approche. L'État du support cmake dans Eclipse est assez lugubre pour un outil qui est supposé être pour le développement C++. L'indexeur (au moins quand il n'est pas tourmenté par ses verrouillages réguliers qui nécessitent redémarrage D'Eclipse), est en fait parmi les meilleurs autour, et Eclipse est un très bon environnement pour sauter autour du code.