회사에서 C / C ++ 상황에 맞는 완성을 얻으려면 어떻게해야합니까?


11

Semantic 이 작업을 수행 할 수있는 것처럼 보이지만 예상대로 작동하지 않습니다. 예를 들어, I #include "Type.h"및 선언 Type tsemantic-complete-analyze-inline경우 point is after after를 사용 하면 t.지속적으로 오류가 발생합니다.

`Type t '에 대한 유형을 찾을 수 없습니다

의 모든 공개 (또는 기타 적절한) 회원을 제게 제공하는 대신 t.

원하는 결과를 얻으려면 어떻게해야합니까? 이상적으로 Semantic이 회사의 백엔드로 제공 할 수있는 모든 것을 어떻게 사용할 수 있습니까?


Type.h가 존재하고 찾을 수 있으며 Type을 선언 하시겠습니까? Type.h와 같은 디렉토리에 Type.h와 Type.cpp Type를 필드 int foo와 클래스 가 있는 클래스 를 선언하면 char bar시맨틱과 회사가 즉시 작동합니다.
J David Smith

company-backends변수가 company-semantic목록에 있는지 확인 했습니까 ? 그렇지 않은 경우 목록의 첫 번째에 추가하여 처음으로 검색되도록하십시오.
cheezy

흥미롭게도, 그것은 내가 설명한 최소한의 예제와 함께 작동합니다. (불행히도 실제로 실제 사용 사례를 제공 할 수는 없지만 중요하지는 않습니다.) Semantic이 모든 것을 재분석하도록 강요 할 수있는 방법이 있습니까?
Sean Allred

@JDavidSmith 어떻게 찾을 수 있습니까? 실제로 작업중 인 프로젝트는 빌드 구조가 매우 복잡합니다.
Sean Allred

@cheezy company-semanticcompany-backends; 감사합니다 :)
숀 알 레드

답변:




0

먼저 CEDET과 ede를 초기화해야합니다

(global-ede-mode 1)
(add-to-list 'semantic-default-submodes 'global-semanticdb-minor-mode 1)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-scheduler-mode 1)
(add-to-list 'semantic-default-submodes 'global-semantic-stickyfunc-mode 1)
(add-to-list 'semantic-default-submodes 'global-semantic-highlight-func-mode 1)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-summary-mode t)
(add-to-list 'semantic-default-submodes 'global-semantic-idle-completions-mode t)
(add-to-list 'semantic-default-submodes 'global-srecode-minor-mode t)
(add-to-list 'semantic-default-submodes 'global-semantic-decoration-mode t)
(semantic-mode) ;; Active le mode semantic
(require 'stickyfunc-enhance) ;; multilines concatene dans la header line
(require 'cedet-cscope)

(require 'ecb)
(ede-cpp-root-project "projName"
                  :name "projName Project"
                  :file "~/workspaces/projName/proj.txt" ;; an arbitrary file
                  :include-path '("/src/main/src"
                                  "/src/main/include"
                                  "/src/test/src"
                                  "/src/test/include"
                                  ... )
                  :system-include-path '("/usr/include/ ~/workspaces/install/proj3/lib/ /usr/include/boost/")
                  :spp-table '(("isUnix" . "") ("BOOST_TEST_DYN_LINK" . "")))
;; cedet semantic
(semanticdb-enable-gnu-global-databases 'c-mode t)
(semanticdb-enable-gnu-global-databases 'c++-mode t)
;; You can add this to improve the parse of macro-heavy code:
(require 'semantic/bovine/c)
(add-to-list 'semantic-lex-c-preprocessor-symbol-file "/usr/lib/gcc/x86_64-redhat-linux/4.4.7/include/stddef.h")

그런 다음 company-c-headers ( https://github.com/randomphrase/company-c-headers )를 사용할 수 있습니다

(require 'company-c-headers)
     (add-to-list 'company-backends 'company-c-headers)
     (add-to-list 'company-c-headers-path-system "/usr/include/c++/4.4.7/ /home/me/DEPEDENCIES/LIBXX/lib/ /home/me/DEPEDENCIES/LIBYY/lib /usr/include/boost/"))
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.