2012-05-24 2 views
5

표준 GNU etags은 다양한 ctags -R에 의해 수행 된 것과 같이 디렉토리의 재귀 보행을 지원하지 않습니다. GNU etags에만 접근 할 수 있다면 bash 쉘 매직을 사용하여 etags를 사용하여 모든 C++ 파일 *.cpp*.h의 파일을 현재 디렉토리와 현재 디렉토리 아래의 모든 디렉토리에 재귀 적으로 생성하여 TAGS를 만듭니다. 테이블을 현재 디렉터리에 emacs에 대한 적절한 경로 이름이 TAGS 테이블 항목을 해결할 수 있습니다.쉘 마법을 사용하여 GNU etags를 사용하여 재귀 적 etags를 만드는 방법은 무엇입니까?

+0

어떻게 되나요? 당신은 "오직 GNU etags에 접근 할 수 있습니까?" Exuberant ctags는 많은 플랫폼에서 무료로 사용할 수 있습니다. 그것을 설치할 수 없습니까? –

+0

고용주가 허가받지 않은 소프트웨어를 설치하는 것을 원하지 않는다면, 제공되는'etags '를 사용하여 해결할 수 있다면 고용주는 그것을 막으려하지 않을 것입니다. – WilliamKF

답변

12

Emacs Wiki은 자주 발생하는 일반적인 문제 또는 모범 사례에 대한 답변에 도움이됩니다. 특정 문제에 대한 Windows 및 Unixen 모두를위한 솔루션이 :

http://www.emacswiki.org/emacs/RecursiveTags#toc2

은 기본적으로 당신은 당신이 같은 다른 파일 엔딩을 사용하는 경우 모든 .cpp 모든 .h 파일 (변경 파일 선택기를 찾기 위해 명령을 실행 예 : , .C) 결과를 etags로 파이프하십시오. Windows에는 xargs가없는 것 같기 때문에 stdin에서 읽을 수있는 최신 버전의 etags가 필요합니다 (stdin을 나타내는 줄 끝의 대시를 참고하십시오). 물론 최신 버전의 etags를 사용한다면 xargs 대신 dash 매개 변수를 사용할 수 있습니다.

윈도우 :

cd c:\source-root 
dir /b /s *.cpp *.h *.hpp | etags --your_options - 

유닉스 :

cd /path/to/source-root 
find . -name "*.cpp" -print -or -name "*.h" -print | xargs etags --append 
0

찾기를 사용하십시오. 남자는 당신이 필요하면 찾아 낸다.

+1

과 man xargs도 있습니다. . . . . 아니면 exuberant를 설치하고 etags를 사용하면 ... – jthill

+0

'-exec command +'가있을 때 xargs를 사용하는 이유는 무엇입니까? – jordanm

1

이 명령은 ETag를가 .c 인에 대한 기본 이름을 "태그"로 파일을 생성, cpp를, cpp를, .HPP, .hpp .h 파일 재귀 적으로

find . -regex ".*\.[cChH]\(pp\)?" -print | etags -