2017-07-23 2 views
4

J'ai actuellement un répertoire de projet comme celui-ciComment spécifier où générer les balises fichier

MainProject 
|_ProjectA 
| |_src 
|  |_file1.cpp 
|  |_file2.cpp 
|  |_..... 
|  |_tags <---tag file generated here 
|_ProjectB 
| |_src 
|  |_file3.cpp 
|  |_file4.cpp 
|  |_..... 
     |_tags <---tag file generated here 

Maintenant file4.cpp utilise des éléments en file1.cpp mais il semble que depuis son dans un autre dossier je reçois la un message

cstag - tag not found 

i Actuellement allé dans mon ProjectA et ProjectB et avons fait pour chaque

ctage -R . 

suite à quoi le fichier de tags a été généré dans chaque projet. Ma question est comment puis-je spécifier où générer le fichier de balises. Dans ce cas, tous les fichiers de balises seront côte à côte et j'espère que cela résoudra ce problème.

Répondre

3

La solution la plus simple est de générer un seul fichier tags:

$ cd MainProject 
$ ctags -R . 

et dire à la hausse récursif Vim lorsque vous cherchez tags fichiers:

set tags=./tags;,tags; 
2

Je recommande d'utiliser le plugin vim gutentags pour gérer la génération de votre fichier d'étiquettes. Gutentags localise le répertoire racine de votre projet en recherchant les dossiers SCM (par exemple, .git) et génère le fichier de balises pour l'ensemble du projet.

Aucune autre configuration n'est requise mais vous pouvez spécifier un autre répertoire de cache si vous le souhaitez (g: gutentags_cache_dir). Jetez un oeil dans le fichier d'aide pour les options de configuration supplémentaires help gutentags.

1

Il n'existe pas qu'une seule façon pour répondre à votre besoin. Les réponses peuvent aussi dépendre d'autres spécificités, ou de ce que vous êtes prêt à faire. Par exemple, si tous vos projets étaient gérés indépendamment dans VCS (IOW, s'ils ont un .git/ ou un .svn/ à la racine), vous auriez accès à des solutions automagiques. gutentags en fait partie - voir la réponse de @ apparat. Il existe également des solutions indépendantes de vim qui écoutent les fichiers validés ou les fichiers modifiés - @romainl has just presented a few of them on reddit yesterday, et je suis assez confiant qu'ils ont déjà été décrits sur SO. Il y a également mon lh-tags plugin, qui est assez similaire à gutentags, et qui définit automatiquement le &tags pour chaque tampon appartenant à un projet - je n'ai pas vérifié ce que fait gutentags sur ce sujet.

Si vos projets ne sont pas sous VCS, vous aurez besoin d'une autre façon de dire: "Ceci est un projet" et "Ceci est la barre de projet". This SO Q/A addresses this topic. De là, vous devriez être en mesure de définir (localement) l:&tags à ce qui est le mieux pour chaque projet, et même de régler comment les plugins vim qui génèrent des tags doivent fonctionner - je suis un (le?) Monomaniac concernant project awareness dans mes plugins. NB: dans le cas lh-tags, il suffit de dire au plugin où les fichiers de tags doivent être générés, il mettra à jour &tags en conséquence.