2014년 1월 9일 목요일

etags


ctags
http://www.skrenta.com/rt/man/ctags.1.html
ctags 는 함수 및 구조체 정의 위치 정보들을 하나의 파일로 저장해 준다.
ctags 프로그램에 소스 파일의 위치를 입력하면 tags 파일이 생성된다.

etags
http://www.skrenta.com/rt/man/etags.1.html
etags 는 emacs 에서 사용할 수 있는 tags 파일을 생성해 준다.
emacs 를 설치하면 있다.


아래 링크에서 tags 파일 생성 방법 참조
http://www.emacswiki.org/emacs/BuildTags

예)
$ find . -name "*.[chS]" | xargs etags -a
확장자가 c, h, S 인 파일 경로들을 나열하게 하고 하나씩 etags 명령에 집어 넣는다.
etags 의 -a 옵션은 결과물 tags 파일에 내용을 추가할 때 사용

$ find . -name "*.[chS]" -exec etags -a "{}" \;
간혹 경로에 공백이 포함되는 경우 사용 "" 으로 경로를 감싸준다.
find 의 -exec 옵션은 경로를 하나씩 찾을 때 마다 -exec 다음의 명령을 수행한다.
 - 반드시 \; 으로 끝맺는다.

$ find . | grep ".*\.\(hh\|hxx\|cc\)" | xargs etags -f TAGS
때론 위 두 방법이 실패하는 경우가 있었다.
추가로 원하는 확장자명은 grep 매개 변수 내용에 추가하면 된다.
예를 들어 c 와 cpp 를 추가하고 싶다면
$ find . | grep ".*\.\(hh\|hxx\|cc\|c\|cpp\)" | xargs etags -f TAGS
etags -f 는 결과물 파일 이름

find 와 grep 을 활용
  • find 는 특정 폴더 내 모든 파일 경로들을 나열한다.
    • 옵션을 이용해서 원하는 pattern 의 파일 경로들만 나열할 수 있다.
  • grep 은 파일 내 특정 pattern 검색이나 출력물의 특정 pattern 검색에 사용한다.

emacs 에서 사용법
아래 단축키들을 사용할 수 있다.
  • M-. : 원하는 함수나 구조체 명 위에 커서를 올려 놓고 M - . 을 누르고 엔터를 입력하면 해당 함수 또는 구조체가 선언된 파일을 열고 커서를 해당 위치로 이동해 준다.
  • M-* : M-. 으로 이동하기 전 위치로 다시 이동한다.
emacs 를 실행하고 처음 M-. 을 실행하면 TAGS 파일의 위치를 물어 볼 수 있다.
 - 이런 경우 해당 파일의 위치를 입력하고 진행하면 된다. (최초 한번만 물음)

tags 파일을 변경하고 싶은 경우
M-x visit-tags-table 을 실행하고 경로를 입력한다.

댓글 없음:

댓글 쓰기