2017-02-09 8 views
1

으로 이동할 수 없습니다. 내 이맥스 24.3과 최신 도깨비에서 "https://git.code.sf.net/p/cedet/git"(또한 이맥스 23.1 및 안정 cedet1.1)에서 C + + 프로젝트에 대한 몇 가지 실험을 않습니다. 나는 semantic-analyze-proto-impl-toggle에서 하나의 작은 "기능 구현으로의 점프"문제를 제외하고는 매우 만족합니다. "~/이맥스/테스트/zz1 /"emacs cedet "semantic-analytic-proto-impl-toggle"은 Alex Ott가 작성한 "CEDET에 대한 부드러운 소개"라는 위대한 기사를 읽은 후에 적절한 구현

class y{ 
    public: 
     int y1(int);//error here! semantic can't found implement in y.cpp 
}; 

2) 파일을 구현 "Y 디렉토리에

1) 머리 파일"y.hpp을 " 내 프로젝트 (만 2 파일) 매우 간단합니다 "디렉토리에서"통화 당 ~/이맥스/테스트/zz2/minimial-cedet-config.el "(https://gist.github.com/alexott/3930120)"

#include "y.hpp" 
    int y::y1(int b) // semantic can found definition in y.hpp 
    { 
    return 0; 
    } 

내 cedet의 설정 알렉스 OOT의 기반으로 "만 다음을 추가 두 줄 :

(의미-추가 시스템이-포함 "~/이맥스/테스트/zz2 /"-

(모드 C++ "~/이맥스/테스트/zz1을 /" '의미-추가 시스템 포함) 'C++ - 모드)

난 내 의미 DB 캐시를 확인하고 모든 DB 파일이 zz1에서 y.hpp에 대한 캐시 DB에서 일부 정보입니다 제대로 생성됩니다 발견 :이 부분

("y1" function 
         (:prototype-flag t 
         :arguments 
          (("" variable (:type "int") (reparse-symbol arg-sub-list) [27 31]))       
         :type "int") 
         (reparse-symbol classsubparts) [20 32]) 

zz2에있는 y.cpp의 캐시 db에있는 정보 :

("y1" function 
       (:parent "y" 
       :arguments 
        (("b" variable (:type "int") (reparse-symbol arg-sub-list) [28 34]))     
       :type "int") 
       nil [18 50]) 

답변

1

내가 제안을받은 후 에릭 루드 람. 나는 시멘틱이이 두 파일을 모른다는 문제가 있다고 생각한다. 같은 프로젝트에 속한다. 시스템 헤더 트릭은 한 방향으로도 도움이 될 수 있지만 양방향으로는 도움이되지 않습니다.

이 같은 프로젝트에 속한다는 것을 가르쳐하는 방법은 는 EDE, 다음 EDE 프로젝트는이처럼 'EDE-CPP 루트'프로젝트 형식을 사용하는 등, 거기에 있는지 확인 수 있도록하는 것입니다 :

; ** 확인 FNAME이 존재하게

(EDE-CPP 루트 프로젝트 "TEST"파일 "~/이맥스/테스트/FNAME" '("/ zz1" "/ zz2") 경로 포함)

당신이 이미 가지고 있기 때문에

(EDE 활성화 제네릭-프로젝트) 당신은 또한 단지 자식이나 CVS의 모든 붙여 넣을 수 있고 그것을 프로젝트로 발견 할 것입니다

. 그런 다음 customize-project 및 포함 경로 을 추가하여 모든 것을 찾을 수 있는지 확인하십시오.

프로젝트 루트를 지정하기 위해 EDE 프로젝트를 사용하기 시작하면 의미 체계 은 탐색 및 완료 시스템에 대한 지원이 훨씬 향상됩니다.

우리는 더 이상 두 줄을 다음 필요가 없습니다

(C++ "~/이맥스/테스트/zz1 /" '의미 - 추가 - 시스템 - 포함 - 모드)

을 (의미 론적 추가 시스템은 "~/emacs/test/zz2 /"C++ - mode를 포함)