 |  |
|
난이도 : 중급 Pawel Leszek, Independent software consultant
2003 년 4 월 22 일 2007 년 12 월 11 일 수정 C/C++ 개발 프로젝트에서 Eclipse Platform을 사용하는 방법을 설명합니다. Eclipse는 주로 자바™ 개발 환경이지만, 다른 프로그래밍 언어들도 지원합니다. 이 글에서, Eclipse에 사용할 수 있는 최상의 C/C++ 툴킷인 C/C++ Development Toolkit (CDT)을 사용하는 방법을 설명합니다.
편집자 주: "Eclipse C/C++ Development Toolkit을 사용한 애플리케이션 개발"의 업데이트 버전이 2007년 7월 발표되었습니다. 원래 버전은 참조용으로 사용될 것입니다. C++ Standard Template Library (STL)와 Eclipse C/C++ Development Toolkit (CDT)을 사용하는 것에 대한 최신 정보를 담은 새로운 기술자료를 읽어보십시오.
C와 C++ 언어는 가장 대중적이며 널리 사용되는 프로그래밍 언어이기 때문에, Eclipse Platform이 C/C++ 개발을 지원한다는 것도 놀랄 일이 아니다. Eclipse Platform은 개발자 툴을 위한 프레임웍이기 때문에, C/C++을 직접 지원하지 않는다. 지원할 때 외부 플러그인을 사용한다. 이 글은 C/C++ 개발을 위한 플러그인 세트인 CDT를 활용하는 방법을 설명한다. CDT 프로젝트(참고자료)는 Eclipse Platform을 위한 완벽한 기능의 C/C++ Integrated Development Environment (IDE)를 제공하고 있다. 비록 이 프로젝트의 초점은 리눅스®에 가있지만, Win32 (Windows® 95/98/Me/NT/2000/XP), QNX Neutrino, Solaris 플랫폼을 포함하여 GNU 개발자 툴을 사용할 수 있는 모든 환경에서 작동한다.
CDT는 Eclipse SDK 플랫폼을 위한 플러그인 세트로서 자바 프로그래밍 언어로 순수하게 구현된 오픈 소스 프로젝트(Common Public License 라이센스)이다. 이러한 플러그인들은 C/C++ 퍼스펙티브를 이제 많은 뷰들과 마법사와 고급 편집과 디버깅 지원으로 C/C++ 개발을 지원하는 Eclipse Workbench에 추가한다.
이러한 복잡성 때문에, CDT는 여러 컴포넌트들로 나뉘는데, 개별 플러그인의 형태를 취한다. 각 컴포넌트는 고유의 커미터, 버그 카테고리, 메일링 리스트를 가진 자주적인 프로젝트로서 운영된다. 하지만, 모든 플러그인들은 CDT가 올바르게 작동하는데 필요하다. 다음은 CDT 플러그인/컴포넌트의 전체 리스트이다:
-
주 CDT 플러그인은 "framework" CDT 플러그인이다.
-
CDT Feature Eclipse는 CDT Feature Component이다.
-
CDT Core는 Core Model, CDOM, Core Components를 제공한다.
-
CDT UI는 Core UI, 뷰, 에디터, 마법사이다.
-
CDT Launch는 컴파일러와 디버거 같은 외부 툴을 위한 시작 메커니즘을 제공한다.
-
CDT Debug Core는 디버깅 기능을 제공한다.
-
CDT Debug UI는 CDT 디버깅 에디터, 뷰, 마법사용 사용자 인터페이스를 제공한다.
-
CDT Debug MI는 MI 호환 디버거용 애플리케이션 커넥터이다.
이제, 이러한 컴포넌트들을 실제 애플리케이션에 사용하는 방법을 배워보자. 그림 1은 Eclipse의 C/C++ 프로젝트 모습이다:
그림 1. CDT plug-in CDT 플러그인으로 Eclipse에서 C/C++ 프로젝트 편집하기
CDT 설치 및 실행
CDT를 다운로드 및 설치하기 전에, GNU C 컴파일러 (GCC)와 모든 동반 툴들(make, binutils, GDB)을 사용할 수 있는지 확인해야 한다. 리눅스를 구동하고 있다면, 배포판에 맞는 패키지 매니저를 사용하여 개발 패키지를 설치한다. Windows에서, Cygwin 툴킷을 설치해야 한다. (참고자료) Cygwin은 GCC 포트와, automake와 GNU Debugger (GDB)를 포함한 모든 필수 개발 툴들을 포함하고 있는 Windows용 유닉스® 계열 환경이다. Cygwin은 cygwin1.dll 라이브러리를 기반으로 구현된다. Cygwin을 위한 대안 솔루션은 Minimalist GNU for Windows (MinGW)(참고자료)이다. 이것은 무료로 사용 가능하고 배포할 수 있는 Windows 스팩의 헤더 파일들의 컬렉션이며, 서드 파티 DLL에 의존하지 않는 네이티브 Windows 프로그램을 만들 수 있는 GNU 툴 세트와 결합되는 Import 라이브러리 컬렉션이다. MinGW는 POSIX와 호환되는 Windows 애플리케이션을 만들어야 한다면 최상의 선택이다. MinGW는 Cygwin에서도 작동할 수 있다. Solaris와 QNX는 지정된 GCC, GNU Make binutils, GDB 포트를 다운로드 해야 한다. (참고자료 보기).
올바른 자바 SDK/JRE와 Eclipse Platform SDK가 설치되어 있고, 이것이 아무런 문제 없이 실행되고 있다고 간주한다. CDT는 안정 릴리스와 Nightly build 상태에서 사용할 수 있다. Nightly build는 충분히 테스트가 되지 않은 것이지만, 더 많은 기능들을 제공하고 현재의 버그들을 수정한다. 설치 전에, 이전 버전의 CDT가 디스크에 있는지 확인하고, 이러한 경우 완벽히 제거해야 한다. CDT에 사용할 수 있는 인스톨러가 없기 때문에, 직접 설치해야 한다. 이전 버전이 존재하는지 여부를 확인하려면, CDT 플러그인이 있는 디렉토리(eclipse/plugins)로 간다. 그런 다음, org.eclipse.cdt 이름으로 시작하는 모든 디렉토리를 제거한다. 마지막으로 workspace/.metadata/.plugins와 features에서 or.eclipse.cdt.* CDT 메타데이터 디렉토리들을 제거한다.
다음 단계는 CDT 바이너리를 다운로드 하는 단계이다. 운영 체계에 맞는 올바른 CDT를 다운로드 하도록 한다. 안타깝게도, CDT는 자바로 작성되었더라도, 플랫폼에 독립적이지 않다. 압축 파일을 임시 디렉토리에 풀고, 모든 플러그인 디렉토리 콘텐트를 Eclipse plugins 하위 디렉토리로 이동한다. features 디렉토리 콘텐트를 Eclipse features 하위 디렉토리로 이동해야 한다. 이제 Eclipse를 재시작 한다. Eclipse가 다시 시작된 후에, 업데이트 매니저가 변경 사항을 발견했음을 알려주고, 이들을 확인할 것을 요청한다. 이제 두 개의 새로운 프로젝트(C 와 C++)를 사용할 수 있다는 것을 알게 된다. C 와 C++.
새로운 프로젝트 만들기
Eclipse에 CDT를 설치한 후에, File > New > Project를 검색한다. 이 곳에서 세 가지 유형의 프로젝트를 찾을 수 있다: C ("Standard C Make Project"), C++ ("Standard C++ Make Project"), "Convert to C or C++ Projects". "Standard Make C++ Project"로 시작하여 프로젝트용 소스 코드 파일을 만든다. C/C++ Projects View에서, 오른쪽 클릭을 하고 New > Simple > File을 선택한다. 파일 이름을 정하고 저장한다. 이러한 방식으로 헤더용 많은 파일들과 C/C++ 구현 코드를 생성하게 될 것이다. 마지막 한 가지 makefile은 바이너리 구현을 위해 GNU Make에 의해 사용될 것이다. 이 makefile에 일반적인 GNU make 신택스를 사용한다. (참고자료) makefile은 스페이스가 아닌 탭을 사용하여 들여쓰기 라인을 만든다는 것을 명심하라.
기존의 소스 코드를 Eclipse로 자주 가져와야 한다. (그림 2) CDT는 Import 마법사를 사용하여 파일 시스템 디렉토리에서 Workbench로 파일들을 복사한다. 메인 메뉴 바로 가서 File > Import > File System을 선택한다. Next를 클릭하고, 소스 디렉토리를 열고 파일을 추가하고 싶은 디렉토리를 선택한다. Select All을 클릭하여 디렉토리에 있는 모든 리소스들을 선택한 다음, 계속 진행하여 추가하고 싶지 않은 것을 해제한다. Import의 목적지가 될 Workbench 프로젝트나 폴더를 지정한다. 파일 시스템에서 폴더와 파일을 가져와서 Navigator 뷰에 두거나(드래그&드롭), 복사와 붙이기를 사용하여 폴더와 파일을 가져올 수 있다.
그림 2. 기존 소스 코드를 CDT 프로젝트로 가져오기
핵심적인 CDT IDE 기능들
CDT IDE는 CDT UI 플러그인에서 제공하는 확장성 있는 에디터를 기반으로 구현된다. 이 모듈은 아직 개발 중이기 때문에, 클래스 브라우저나 언어 문서 브라우저 같은 중요한 유틸리티가 아직 없다. CDT IDE의 주요 기능은 다음과 같다:
-
신택스 하이라이팅 -- CDT IDE는 C/C++ 신택스를 인지하고, 완벽히 설정 가능한 코드 색상화와 코드 포맷팅으로 신택스 하이라이팅을 제공한다:
그림 3. 컴파일 실패 후 강조된 신택스 에러
-
Outline -- Outline 윈도우 모듈을 통해 소스 코드에 나타나는 프로시저, 변수, 선언, 함수들을 빠르게 볼 수 있다. Outline에서, 소스 코드의 해당 레퍼런스로 점프하거나, 모든 프로젝트 소스 코드를 검색할 수 있다.
-
코드 어시스트 -- 코드 완성 기능은 Borland C++ Builder 또는 MS Visual Studio의 기능과 비슷하다. 코드 템플릿을 사용하고 어처구니 없는 신택스 에러를 피하도록 해준다:
그림 4. 올바른 신택스를 사용하도록 도와주는 코드 어시스트 기능
-
코드 템플릿 -- 코드 어시스트 기능에 의해 사용되는 코드 템플릿은 표준 C/C++ 언어의 문법적 구조에 대한 정의이다.
author 또는 date 키워드 같은 고유의 숏컷을 확장할 수 있는 고유의 코드 템플릿을 정의할 수도 있다. Window > Preferences > C/C++ > Code Templates에서, 새로운 템플릿을 추가하고 전체 템플릿 리스트를 볼 수 있다. 템플릿들은 XML 파일로서 반입 및 반출될 수 있다.
그림 5. 사전 정의된 C/C++ 코드 템플릿
-
코드 히스토리 -- CVS나 또 다른 소스 코드 버전 관리 소프트웨어를 사용하지 않더라도, 프로젝트 소스 코드의 로컬 변경 사항들을 추적할 수 있다. 선택된 파일을 오른쪽 클릭하여, 콘텍스트 메뉴에서 Compare With > Local History...를 선택한다:
그림 6. Local History 기능으로 소스 코드에서 변경 사항 확인하기
프로젝트 구현과 실행
CDT는 프로젝트 구현 옵션들을 설정하는 쉬운 방법을 제공한다. CDT는 세 개의 GNU 툴(GCC, GDB, Make)에 의존한다. 따라서, 디버깅에는 GDB, 컴파일에는 GCC와 Make 의존성이 이러한 애플리케이션들을 사용자들이 사용하고자 하는 플랫폼에 사용할 수 있어야 한다. 대부분의 리눅스(일반적으로 POSIX 계열) 소스 코드 패키지는 빌드 환경을 검사할 때 autoconf 스크립트를 사용하기 때문에, configure 명령을 실행해야 하는데, 이는 컴파일 전에 "Makefile"을 만든다. CDT는 autoconf 스크립트를 편집하는 방식을 제공하기 때문에, 이들을 직접 작성해야 한다. 하지만, 구현 옵션들을 설정하여 컴파일 전에 configure
명령어를 호출할 수 있다.
make 명령어를 호출함으로써 프로젝트를 구현한다면, 기본 설정은 괜찮지만, 더 복잡한 방식을 사용한다면, Build Command 텍스트 박스에 올바른 명령어(예를 들어, make -f make_it_all)를 입력해야 한다. 그 다음에는, C/C++ Projects View에서, C/C++ project를 선택하고 오른쪽 클릭을 하여 Rebuild Project를 선택한다. make, compiler, linker에서 오는 모든 컴파일 메시지들은 콘솔 윈도우로 보내진다:
그림 7. 컴파일러에서 온 아웃풋으로 채워진 콘솔 윈도우
컴파일을 성공한 후에, 애플리케이션을 실행해야 한다. 실행과 디버깅에 필요한 모든 옵션들은 메인 Eclipse 메뉴의 Run 메뉴 밑에 있다. 하지만, 프로젝트 실행 옵션은 전에 정의되어야 한다. 실행 애플리케이션에 대한 다른 프로파일이 있는 메인 메뉴에서 Run... 옵션으로 감으로써 이를 수행한다. 예를 들어, 테스팅 목적에 한 개의 프로파일을 사용하고, 최종 버전을 실행할 때 또 다른 프로파일을 사용할 수 있다. 또한, 애플리케이션으로 전달하고 싶은 인자들을 정의하거나, 환경 변수를 설정할 수 있다. 어떤 디버거(GNU GDB 또는 Cygwin GDB)를 사용할 것인지 등의 디버깅 옵션들을 설정하는 옵션들도 있다. 그림 8은 프로젝트를 위해 생성된 실행 프로파일이다.
그림 8. 프로젝트용 run 프로파일 만들기
프로젝트 구현을 위한 보다 일반적인 옵션들은 C/C++ Projects View로 가서, 프로젝트를 선택하고, 오른쪽 클릭을 하여 Build Settings 탭에서 Properties를 선택하면 알 수 있다. 이러한 옵션들은, 컴파일 에러가 발생할 때 빌드가 중지하면 어떤 일이 발생하는지를 주로 다루고 있다.
C/C++ 프로젝트 디버깅
CDT는 표준 Eclipse Debug View를 C/C++ 코드를 디버깅하는 기능으로 확장했다. Debug View에서는 Workbench에 있는 프로그램의 디버깅 또는 실행을 관리할 수 있다. 현재 프로젝트를 디버깅 하려면, Debug View로 전환하여, 코드에 중단점/와치포인트를 설정하고, 변수와 레지스터를 추적한다. Debug View는 여러분이 디버깅 하고 있는 대상에 대한 중지된 쓰레드에 대해 스택 트레이스를 디스플레이 한다. 프로그램의 각 쓰레드는 트리에 있는 노드로서 나타나고, Debug View는 각 실행 대상을 위한 프로세스를 디스플레이 한다.
Eclipse는 컴포넌트들 중 하나인 CDT Debug MI 플러그인을 통해 Machine Interface (MI) 호환의 디버거를 지원한다. MI 디버거가 정확히 무엇인가? 전통적으로, ddd와 xxgdb 같은 서드 파티 GUI 디버거들은(참고자료) 디버깅 기능을 구현할 때 GDB의 Command Line Interface (CLI)에 의존한다. 불행히도, 이 인터페이스는 믿을만한 것이 못된다. GDB/MI는 새로운 머신 지향의 인터페이스를 제공하는데, 이것은 GDB의 아웃풋을 직접 파싱해야 하는 프로그램에 훨씬 더 맞는 새로운 머신 지향의 인터페이스를 제공한다.
결론
C/C++ Development Toolkit (CDT)은 Eclipse에서 C/C++ 애플리케이션들을 개발할 수 있는 강력한 플러그인 세트를 제공한다. CDT가 아직 개발 중이긴 하지만, 지금 많은 기능들을 사용할 수 있다.
참고자료 교육
-
Eclipse.org: Eclipse 커뮤니티 참여와 다운로드.
- CDT Project는 버그 및 기능 트래킹 시스템으로서 Eclipse Bugs를 사용한다.
- 이클립스 입문 기술자료 및 사용방법 보기, "Eclipse Platform 실행하기" : Greg Adams와 Marc Erickson.
- Eclipse 플러그인을 이용한 애플리케이션 보기, "Eclipse Platform 시작하기 (한글)" : David Gallardo.
- 흥미있는 개인소유 이클립스 플러그인 구현하기, "Eclipse 플러그인 개발하기 (한글)."
-
GNU make syntax (gnu.org).
- WebSphere Studio 툴은 WebSphere Studio Workbench를 기반으로 하고 있고, Workbench 는 Eclipse 프레임웍을 기반으로 하기 때문에, Eclipse 도움말 확장 기능을 사용하여 제품 문서를 쉽게 확장할 수 있다. "Eclipse Help Systems을 확장하여 WebSphere Studio Tool에 자가 도움말 지원 추가하기."
- IBM developerWorks의 Eclipse project resources를 이용하여 이클립스 스킬을 넓혀보라.
-
Eclipse 콘텐트(영문) (developerWorks).
- developerWorks 오픈 소스 존: 오픈 소스 기술을 사용하고, IBM의 제품들과 함께 사용하는데 있어서 도움이 될 만한 HOT-TO 정보, 툴, 프로젝트 업데이트를 만나보라. Eclipse, Globus/Grid, Apache, Derby/Cloudscape, Linux, PHP, Perl, Python을 비롯하여 라이센싱과 오픈 소스 개발과 관련한 주제들을 다루고 있다.
-
developerWorks 기술 이벤트와 웹캐스트.
제품 및 기술 얻기
토론
필자소개  | |  | Pawel Leszek(Studio B 저자)은 독립 소프트웨어 컨설턴트이자 Linux/Win/Mac OS 시스템 아키텍처와 관리를 전문으로 다루는 저자이다. 많은 운영 체제, 프로그래밍 언어, 네트워크 프로토콜, Lotus Domino와 DB2에 경험이 있다. "LinuxWorld"의 기자이며, "PC World"의 리눅스 칼럼니스트로 활동하고 있다. Warsaw에서 아내와 딸과 함께 살고 있다. (pawel.leszek@ipgate.pl) |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|  |