Emacs и cscope с несколькими каталогами

Как мне настроить cscope в Emacs, когда мой исходный код находится в нескольких каталогах?

Скажем, у меня есть несколько путей для моего проекта C++:

  1. /path/to/my/code (и подкаталоги)
  2. /path/to/other/code (и подкаталоги)
  3. /path/to/static/linking/include/files (и подкаталоги)
  4. /path/to/static/linking/lib/files'(и подкаталоги)

Я хотел бы использовать xcscope перемещаться / искать символы в моем коде и библиотеке, на которую я ссылаюсь.

Инструкции для xcscope.el скажем, что я должен сначала запустить Cc s (Cscope-> Создать список и индекс) в /path/to/my/code, но я тогда не понимаю, как мне индексировать другие пути с помощью cscope.

В документации сказано, что я должен пойти в другие каталоги и запустить cscope -bНо что я должен делать после этого?

Я посмотрел на cscope.files файл, который создал Cc. Я думаю, что я должен добавить другие мои пути к этому файлу, но этот файл содержит список файлов исходного кода (не каталогов).

Нужно ли вручную редактировать cscope.files добавить каждый файл, который я хочу проиндексировать, который находится за пределами корневого каталога моего проекта?

2 ответа

Документация сбивает с толку.

Я получил одно решение от http://cscope.sourceforge.net/large_projects.html. Все еще сбивает с толку.

cscope.files удачно назван. Это НЕ каталоги. Это файлы, только файлы. Что так же сложно, как кажется. Что делать, если у вас есть сотни файлов. Затем вы должны написать сотни строк, по одной на файл, в cscope.files. Я не шучу.

Автоматизируйте это с помощью некоторых скриптов. Например, в linux используйте сценарии bash и операторы перенаправления (>,>>,|) для выбора и фильтрации файлов из любых и всех каталогов в этом файле cscope.files. Как насчет каталога, в котором находится cscope.files? Если вы не включите эти файлы, он найдет их только при открытии вашего проекта (в emacs, но, вероятно, применимо к любой IDE) в этом исходном каталоге. Поэтому включите их, чтобы легко открыть ваш проект из любой точки мира. Опция "recursive/-R" кажется очевидной для отправки в cscope-indexer. Нет, не со многими корневыми каталогами. Ничего не делает (вероятно, может что-то сделать со скриптами или elisp или кто знает). Просто введите эти файлы по абсолютному пути в cscope.files. И вам, возможно, придется убедиться, что у вас есть только один файл cscope.files на проект. Не разделяйте их относительно каждого направления. Или, может быть, вы можете что-то посмотреть.

Помните, добавьте /path/to/each/file/ перед файлом, если вы хотите, чтобы cscope.files указывал на него откуда угодно. cscope не "умный", он тупой, он просто указывает, где искать, и не знает, где искать "имя файла", не зная, где он находится. Вы просто просите это позвонить locate filename, что он не может сделать в любом случае, когда вы даете ему одинокое имя файла без пути dir вне каталога, в котором находится конкретный файл cscope.files.

Я надеюсь, что есть способ использовать xcscope внутри emacs, просто добавив каталоги, которые он будет каталогизировать и проиндексировать, как это предлагается в меню xcscope docs и emacs. Но мне не удалось заставить это работать таким образом.

Не будет ли работать мягкая ссылка (ln -s)? Работал на меня.

Другие вопросы по тегам