Конфигурация пути при навигации по cedet

Я хочу использовать cedet для навигации в своей программе. Я использую semantic-ia-fast-jump для перехода к объявлению и semantic-analyze-proto-impl-toggle для перехода к реализации. Я обнаружил, что этим двум командам нужны файлы в одном каталоге. Поэтому мне нужно добавить все каталоги в путь поиска. Я имею в виду парня из Интернета. код выглядит следующим образом:

(setq semanticdb-project-roots (list (expand-file-name "~/")))    
(defconst cedet-user-include-dirs    
  (list "~/samuel/project/modules/MManage/inc"    
        "~/samuel/project/modules/MManage/src"    
        ...
   ))    
(require 'semantic-c nil 'noerror)    
(let ((include-dirs cedet-user-include-dirs))    
  (mapc (lambda (dir)    
         (semantic-add-system-include dir 'c++-mode)    
         (semantic-add-system-include dir 'c-mode))    
          include-dirs))        

У меня есть несколько модулей, поэтому мне нужно добавить много каталогов. Это не converient и не портативный. Я думаю, что это должен быть хороший способ настроить это.

PS: см. http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html#sec6
Моя настройка выглядит следующим образом

    (ede-cpp-root-project "library_samuel"
:name "library_samuel project"
:file (expand-file-name "~/samuel/project_self/library_samuel/CMakeLists.txt")
:include-path '("/common/include"  "/modules/MManage/inc" "/modules/ImageProcess/inc" )
:spp-table '(("BUILD_APP" . "")))

semantic-ia-fast-jump может работать хорошо, но semantic-analyze-proto-impl-toggle не работает . Похоже, что головной и исходный файлы должны находиться в одних и тех же каталогах. Как решить эту проблему.


person Samuel    schedule 09.08.2012    source источник


Ответы (1)


Лучше настраивать проекты (см. мою статью о CEDET, Например). А внутри проекта вы можете ссылаться на относительные пути, используя директиву include-path

person Alex Ott    schedule 09.08.2012
comment
Спасибо, Алекс Отт, я читал вашу статью раньше. В то время я не понимал часть Как настроить Semantic для работы с проектом C & C ++. Я думал, что это принадлежит EDE. А мне нужна только семантическая часть. Спасибо еще раз - person Samuel; 10.08.2012
comment
Привет Алекс Отт. Я установил ede-cpp-root-project, как вы сказали. Теперь не проблема перейти к объявлению. Но он не может работать при семантическом анализе-прото-импл-переключении на определение. Выяснил, что только головной и исходный файлы в одном каталоге. Это может сработать. - person Samuel; 10.08.2012
comment
это моя настройка: (ede-cpp-root-project library_samuel :name library_samuel project :file (expand-file-name ~/samuel/project_self/library_samuel/CMakeLists.txt) :include-path '(/common/include/modules /MManage/inc /modules/ImageProcess/inc )) - person Samuel; 10.08.2012
comment
Хм, я не искал исходный код proto-impl-toggle, но он должен работать независимо от местоположения, мне нужно это изучить. - person Alex Ott; 11.08.2012
comment
Алекс, большое спасибо за обучение, я наконец-то освоил основы семантического анализа. - person yPhil; 29.10.2014