본문 바로가기

C

C언어 개발 환경 구축 (3) - YouCompleteMe

개요

YouCompleteMe (이하 YCM)은 입력한 값을 토대로 추천 및 자동완성을 지원하고 실시간으로 syntax 체크를 수행하여 잘못된 라인을 표시해주고 에러를 출력해 준다. 이를 사용하려면 설정이 약간 복잡한 편이지만 우리는 앞서 "C언어 개발 환경 구축(2) - autotools"에서 autotools를 이용한 패키지 빌더를 선택하였기 때문에 손쉽게 설정 할 수 있다.

 

YCM-Generator plugin

해당 플러그인은 cmake,autotools,qmake,make와 같은 빌더를 지원한다. 해당 빌드 시스템을 파싱하여 CFLAGS, LDFLAGS들을 분석하여 적절한 .ycm_extra_conf.py 파일을 생성하여 YouCompleteMe를 사용 할 수 있도록 지원한다.

 

앞서 사용한 amhello 프로젝트를 사용하여 다음을 수행한다.

 

ubuntu@autotools:~/Workspaces/amhello$ ~/.vim/plugged/YCM-Generator/config_gen.py -b autotools .
 Configuring autotools...
$ /home/ubuntu/Workspaces/amhello/configure

Running make...
$ make -i -j1

Cleaning up...
$ make maintainer-clean
Build completed in 1.4 sec

Collected 2 relevant entries for C compilation (0 discarded).
Collected 0 relevant entries for C++ compilation (0 discarded).
Created YCM config file with 3 C flags

-b는 build system으로 autotools를 사용한다는 뜻이고 . 은 현재 디렉토리를 의미한다.

... 생략 ...
import os
import ycm_core

flags = [
    '-x',
    'c',
    '-DHAVE_CONFIG_H',
    '-I.',
    '-I..',
]
... 생략 ...

.ycm_extra_conf.py 를 열어보면 위와 같이 파일이 생성된다.

 

YouCompleteMe plugin

사용법은 간단하다. vim을 실행시켜 파일을 수정해 보자.

문자열을 일부 입력하고 Control + Space를 입력(1편에서의 .vimrc기준) 하면 자동완성 기능이 동작한다.

 

vim을 실행하여 파일에 syntax를 체크하여 잘못된 부분이 표시된다.

 

YouCompleteMe는 개발자에게 상당한 편의성을 제공해 준다. 간단한 함수의 명세와 구조체 내부의 변수이름 등의 일부만으로도 추천기능이 동작하며 실시간 syntax 체크 기능으로 사전에 문제를 알려준다.