cmake-ide est un package pour permettre des fonctionnalités de type IDE sur EMACS pour les projets CMake. Il prend également en charge les projets non-Cake tant qu'une base de données de compilation est générée hors bande. Il utilise d'autres forfaits pour faire son aisance, dans une combinaison de:
cmake-ide définira les variables et les fonctions d'appel pour les packages dépendants installés.
Il fonctionne en exécutant Cmake dans EMACS afin d'obtenir les drapeaux du compilateur nécessaires pour passer aux autres outils. Étant donné que toutes les dépendances sont spécifiées dans les scripts CMake, il n'est pas nécessaire de maintenir un système de suivi de dépendance parallèle pour EMACS. Demandez simplement à Cmake.
auto-complete-clang , flycheck et autres pour un projet CMake automatiquement. Presque aucune configuration nécessaire.cmake-ide-build-dir à définir.cmake-ide-delete-file vous permet d'avoir la même commodité lors de la suppression des fichiers. Je ne peux pas trouver une meilleure façon de le faire. De toute évidence, la suppression du fichier signifie que devoir exécuter Cmake à nouveau manuellement pour qu'il enregistre la modification de la liste des fichiers à compiller.cmake-ide-build-dir est défini, il cmake-ide-compile considéré comme le répertoire de construction pour exécuter CMake. Il détecte automatiquement Ninja et fait des builds et définit la commande compilée en conséquence. La commande à utiliser peut être personnalisée en définissant la variable cmake-compile-command .cmake-ide peut faire de l'utilisation des RTAG pour trouver des définitions, également en utilisant Clang. Si (require 'rtags) est appelé avant cmake-ide-setup , il démarrera automatiquement le serveur RTAGS ( rdm ) et appellera rc -J pour indexer les fichiers de projet pour 0-config "Jump to Definition" et tout ce que RTAGS offre. Cela ne fonctionne que si rdm et rc et dans le chemin du système ou si cmake-ide-rdm-executable et cmake-ide-rc-executable sont correctement personnalisés. cmake-ide peut créer automatiquement des répertoires de construction pour vous - soit dans le répertoire TMP du système, soit sous cmake-ide-build-pool-dir (IF SET). Par défaut, tous les répertoires de construction créés automatiquement (peu importe où créé) auront des noms temporaires et uniques, qui changeront avec chaque nouvelle session et ne sont donc pas réutilisables. Vous pouvez cependant en définissant cmake-ide-build-pool-use-persistent-naming Utilisez un schéma de dénomination reproductible qui est basé sur le chemin du projet et ne changera pas tant que le chemin du projet est le même. De cette façon, vous pouvez réutiliser le répertoire de construction.
En utilisant à la fois cmake-ide-build-pool-dir et cmake-ide-build-pool-use-persistent-naming , vous pouvez complètement supprimer la nécessité de configurer un répertoire de construction par projet avec des variables locales de répertoire (par exemple).
Utilisez .dir-locals.el pour définir les variables cmake-ide-project-dir et cmake-ide-build-dir (utilisez des chemins absolus).
.dir-Locals.el: ((nil. ((cmake-ide-build-dir. "/ path / to / build / dir") (cmake-ide-project-dir. "/ path / to / project / dir")))))
Si un fichier appelé compile_commands.json existe dans cmake-ide-build-dir , cela fonctionnera aussi bien que pour les projets CMake. Bear (https://github.com/rizsotto/bear) peut être utilisé pour générer une compilé_commands.json à partir d'une commande de marque.
Installez à partir de Melpa ou Melpa stable avec:
M-x package-install RET cmake-ide.
Ajoutez ceci à votre .emacs / init.el :
(require 'rtags) ;; optional, must have rtags installed
(cmake-ide-setup)
Si cmake-ide-flags-c ou cmake-ide-flags-c++ sont définis, ils seront ajoutés aux ac-clang-flags et aux company-clang-arguments . Ces variables doivent être définies. En particulier, ils doivent contenir le système incluent les chemins (par exemple '("-I/usr/include/c++/4.9.1" "...") . Pour un système avec GCC, vous pouvez obtenir ces informations en exécutant gcc -v -xc++ /dev/null -fsyntax-only (c'est le même prérequis pour auto-complete-clang , puisque c'est le Clang lui-même).
Et ... c'est tout. Il fonctionne en appelant Cmake et en analysant le fichier JSON résultant avec des indicateurs de compilateur. Définissez cmake-ide-build-dir à l'endroit où votre projet est en cours de construction et vous n'aurez pas à rappeler CMake à nouveau manuellement (sauf pour la première fois pour spécifier des options). Mieux fait avec les variables locales du répertoire.