auto-complete
은 다중 모듈을 가진 Emacs C++ 프로젝트에서 작동하지 않습니다. 각 하위 모듈에 종속 된 헤더 파일은 모듈 자체와 다른 모듈에 모두 존재합니다. 즉, 하나의 모듈은 다른 모듈의 헤더 파일을 포함 할 수 있습니다. 다음은 디렉토리 간 헤더 파일을위한 Emacs-24 자동 완성
.
├── CMakeLists.txt
├── my_inc
│ ├── CMakeLists.txt
│ ├── myadd.cpp
│ └── myadd.h
├── README.md
└── src
├── CMakeLists.txt
├── Hello.java
├── helper.cpp
├── helper.h
└── main.cpp
main.cpp
:
#include "myadd.h"
#include "helper.h"
int main() {
MyAdd add_obj;
Helper h;
h.toString(); // Auto-complete works since Helper is in the same directory.
add_obj. // Auto-complete for add_obj does not work
// because myadd.h is in another directory (my_inc).
}
방법 목록 내가 h
후 .
를 입력 할 때 팝업하지만 변수 add_obj
의 클래스하지 않습니다 다른 모듈의 myadd.h
에 정의되어 있습니다. my_inc
.
(ede-cpp-root-project)
이 솔루션은 여기서 일 않습니다
나는 몇 가지 솔루션 (CEDET 관련)을 시도했다. 나는 많은 프로젝트를 갖고 있기 때문에 내
.emacs
대형을 만들 것때문에이 일을 적용하지 않는다.
:include-path
여기에서는 20 개 이상의 하위 모듈의 복잡한 헤더 종속성을 처리 할 수 없으므로이 솔루션을 장난감과 비슷하게 만듭니다. 나는.emacs
에서 구성을 분리하는 것을 선호합니다.
-
내가
ede-new
및 C c를 통해 프로젝트와 대상을 만들 EDE 프로젝트. 이것은 이름 대신 컴파일을 위해서만 사용되며, 메소드는 자동 완성됩니다. this question에 용액에 설명 된 바와 같이
ede-generic-project
과 manual on
ede-generic-project
하지만이 오류 받고 있어요 : 나는 실행하면eieio-oref: Wrong type argument: (or eieio-object-p class-p), nil
을 :
MX
ede-customize-project
RET에게(ede-enable-generic-projects)
이후.
환경 : 나는 이맥스 24.3 사용하고 auto-complete
및 cedet2.0
를 설치했습니다.