KDevelop
KDE 프로젝트의 하나로 KDE 애플리케이션 개발을 위해 만들어진 IDE이다. C++, Java, Ruby 등 다양한 언어를 지원하며 현재 리눅스에서 돌아가는 공짜 C++ IDE 중 가장 완성도가 높다.(Java는 이클립스가 있으니까)
2007년 2월 10일부터 추가됨
애초에 KDE 어플리케이션 개발을 위해 만들어 졌긴 하지만 다른 용도로 쓰기 좋은 범용 IDE 입니다. (저는 python도 이걸 이용합니다.)
2007년 2월 10일 현재 버전: 3.4.0
요구사항
![]() 현재 지원중인 언어: Ada, C/C++, Fortran, Java, PHP, Pascal, Perl, Python, Ruby, Shell
각 언어마다 지원되는 기능들이 약간씩 다르고, 저는 C/C++ 과 Python 만 써 봤습니다만.
확실히 C/C++ 을 리눅스에서 개발한다면 가볍고도 가장 강력한 IDE 라 생각합니다. (이클립스에 CDT가 있긴 하지만 자바에 최적화되어 있고 무겁죠?)
1. 개발, 프로그래밍 또는 통합 개발환경(IDE) 초보자들을 위해 ¶Q. 통합 개발환경(IDE)은 무엇입니까?
A. 프로그래밍을 위해서는, 컴파일러, 링커, 에디터 및 버전관리 도구, 소스코드 네비게이터 및 기타 여러가지 툴들이 필요합니다. 이렇게 많은 tool을 직접 일일이 다룬다면 (능숙한 분들은 괜찮겠지만) 매우 피곤할 것입니다. IDE 프로그램들은 이렇게 다양한 툴들을 자신의 framework 안으로 통합하고, 쉽게 ( ex 마우스 클릭 한번으로 컴파일을 한다던지 ) 사용할 수 있도록 하는 것입니다.
Q. IDE 는 무슨 기능을 제공하지 않습니까?
A. IDE 는 해당 개별 툴들이 설치되어 있지 않으면, 그 부분에 해당하는 기능을 할 수 없습니다. 이것이 초보자들이 오픈소스 계열 IDE 를 사용해 보고 적응하지 못하고 "역시 VC++이 좋아" 라고 말하는 이유입니다.
3.1. Version Control System 통합 ¶Subversion, CVS, ClearCase, Perforce 를 지원합니다. 윗 그림에 보여지고 있는 상황이죠. 왼쪽의 파일 목록에 색깔과 status 가 각각 다르게 나옵니다. 에디터나 왼쪽의 tree를 통해서 각각 add, commit, delete, revert, update 등등이 가능합니다. (즉 svn 명령을 키보드로 입력할 필요가 없습니다.)
참고1. 버전관리 기능을 사용하기 위해서는 해당 라이브러리를 별도로 설치하시고, 컴파일 플래그에서 enable 되어 있는지 확인하셔야 합니다. ( --enable-subversion, --enable-cvs 등등 )
참고2. subversion 을 사용하기 위해서는 libsvn, kdesdk-kio-plugins 종류의 패키지를 설치하셔야(리눅스 배포본마다 이름이 약간 다름) svn이 KDevelop 과 통합되서 동작합니다. kdesdk 는 kde 공식 패키지 중 하나이며 kdesdk 소스트리의 subdirectory 중 kioslave 라는 곳에 subversion plugin 이 있습니다. kdesdk 전체를 설치하실 필요는 없습니다.
참고3. CVS 를 KDevelop 과 사용하려면 Cervisia >= 2.0 이 필요합니다.
3.2. Source Navigation ¶3가지 방법을 이용해서 효과적으로 네비게이션을 할 수 있습니다. 특정 함수나 클래스이름, 파일이름, 심지어 변수이름만을 이용해서 원하는 함수/클래스 등으로 바로 이동할 수 있습니다.
3.2.1. QuickOpen Part ¶Function, Method, Class, File 을 키워드를 이용하여 바로 찾아갑니다. 이름 입력란에 이름의 일부를 입력하면 해당 이름의 일부를 가지고 있는 item을 찾아줍니다. 만일 프로젝트 안에 2개 이상의 같은 이름이 있으면 그 아이템이 어느 클래스, 파일에 있는가를 보여줍니다.
![]() [PNG image (28.88 KB)] 위 그림에서 보면 commi 까지를 포함하는 함수로만 범위가 좁혀집니다. commit 함수를 선택해 보겠습니다. 프로젝트 파일 안에 commit 함수가 매우 여러개 있으므로 해당하는 모든 후보를 보여줍니다.
![]() [PNG image (49.31 KB)] 3.2.2. CTags Integration ¶CTags
![]() int var1;
double foo_func( int x ){...}
class foo_class{ .. }
등과 같은 라인이 있다고 할 때, "var1은 무슨 파일 어디에 int 형으로 지정되어 있고 foo_func 라는 함수는 int 형을 받아서 double 형을 반환하는데 그것은 무슨파일 어디에 있다" 와 같은 정보를 담고 있는 것입니다.
걱정하지 않아도 되실 것은, 사용자가 직접 해당 파일을 다루는 경우는 없으며 대신 CTags 를 지원하는 에디터, 혹은 IDE 를 사용하기만 하면 되는 것입니다. KDevelop은 CTags 를 완벽하게 지원합니다.
CTags 는 33개의 프로그래밍 언어를 지원합니다. 또한 vi, emacs 등 많은 에디터들이 CTags 를 사용할 수 있게 하였습니다. KDevelop의 CTags Integration은 그래픽 GUI의 장점을 최대한 살렸다는 데 있습니다.
참고: 이 기능을 이용하시려면 CTags를 설치하셔야 합니다.
![]() 3.2.3. Class View ¶위에 설명한 방법들은 키보드를 이용, 찾고자 하는 단어의 일부를 입력한 뒤, 해당 단어를 포함하고 있는 리스트를 선택해서 그 부분으로 jump하는 방법입니다. 키보드를 사용하지 않고, 마우스 만으로 원하는 함수, 클래스, 변수 등을 선택해서 해당 부분을 열어볼 수 있습니다. 쉽게 말해 비주얼 C++ 방식입니다.
3.3. Code Completion ¶코드자동완성기능은
1. 함수/변수/클래스 이름의 일부만 입력했을 때, 해당 이름을 포함하는 함수/변수/클래스 등의 리스트를 나타내어 주기도 하고
2. 구조체, 클래스 뒤에 . 이나 -> 를 입력했을 시, 가능한 멤버들을 보여주기도 합니다.
아래 그림과 같이 하면 프로젝트 파일이 아닌, 다른 디렉토리의 파일까지도 parsing 을 한 뒤 자동완성 기능을 할 때 사용합니다. 예를 들어 내가 QT library 을 사용하여 다른 어플리케이션(ex 워드프로세서) 개발을 한다고 가정해 봅시다. 내 프로젝트 파일에는 qt library를 컴파일 시 링크하도록 설정하긴 하겠지만, qt의 소스코드들까지 들어있는 것은 아닙니다. 하지만 /usr/include/qt3 (배포본마다 다릅니다.) 디렉토리의 헤더 파일들을 아래 그림처럼 추가시키면 qt library의 모든 클래스 들에 대한 자동 완성까지 지원합니다.
3.4. 컴파일, 링크, 디버깅 ¶command line에서 make 나 gdb 등을 별도로 실행할 필요 없이 IDE 상에서 메뉴나 단축키를 이용하여 편리하게 컴파일, 링크 및 디버깅을 할 수 있습니다. 컴파일 에러 발생시 IDE 의 메세지 창에 컴파일러의 메세지가 나타나며 해당 메세지 더블클릭(또는 단축기 F4)시 해당 지점으로 바로 이동합니다.
디버깅을 위하여 IDE 내에서 어플리케이션을 실행시킬 수 있습니다. KDevelop은 내부에서 gdb를 실행시켜서 debugging integration을 지원합니다. gdb의 입출력을 KDevelop이 관리함으로서 그래픽 환경에서 디버깅 할 수 있게 되었고 command line debugger 를 사용할 때 오던 불편함을 없앴습니다.
이것 역시 컴파일 및 디버깅을 하기 위해서는 gcc, g++, gdb 등이 설치되어 있어야 합니다.
![]() [PNG image (215.05 KB)] 4.1. 프로젝트 파일 생성, 빌드 시스템 선택 ¶Project 메뉴 -> New project -> show all project templates 체크선택 -> 원하는 템플릿과 프로젝트 이름을 입력하고 계속 진행합니다.
이미 존재하는 소스코드들이 있고, 이것들은 기존에 vi나 기타 다른 개발도구를 이용하여 개발되고 있었습니다. 이 코드들을 KDevelop 을 이용하여 개발을 하려 합니다. 이 때 import 를 합니다.
Project 메뉴 -> import existing project -> 디렉토리, 프로젝트 이름, project type 을 지정하고 enter 칩니다.
KDevelop은 automake manager가 있어서 Makefile.am 및 빌드 시스템을 자동으로 관리해 줍니다. 프로젝트 내의 파일을 빌드 시스템에 포함시킬 때 그래픽 환경으로 Makefile.am 을 변경할 수 있습니다. Makefile.am 이나 기타 빌드 시스템이 변경되었을 때는 Build 메뉴 -> Run automake & friends 를 선택해서 configure 파일을 다시 작성한 뒤, Run configure 를 다시 실행해야 합니다.
만약 자신이 자신만의 Makefile을 만들기 원한다면 custom Makefiles 를 선택하셔야 합니다. 이 경우 자신이 Makefile을 직접 작성해야 합니다.
4.2.1. configure options 설정 ¶Project 메뉴 -> Project options 선택 -> 왼쪽 컬럼에서 Configure options 선택
이 곳에서는 각 configuration 별로 ./configure 가 실행될 때 넘겨줄 인자를 지정해 줄 수 있습니다.(Configure arguments). Build directory 에는 컴파일된 오브젝트 객체와 실행파일 들이 어디에 위치할 지를 지정합니다.
automake manager 를 썼다면 --enable-debug=full, build directory는 debug 라는 것이 지정되어 있을 겁니다.
configure arguments: 에는 프로그램이 설치될 위치도 지정할 수 있는데 예를 들어--prefix=/home/adjj/development 와 같이 하면 /home/adjj/development 에 컴파일 된 프로그램들이 위치합니다.
build directory와 --prefix 의 차이 : 써 놓고 보니 헷갈릴 수 있겠네요. build directory는 임시 오브젝트 파일들과 링크가 완성된 바이너리들이 최초에 생성되는 디렉토리이고, --prefix 는 그러한 바이너리들이 실제 위치로 복사될(install될) 위치입니다. 개발이 끝나고 프로그램이 릴리즈 된다면 프로그램은 --prefix 에서 지정된 곳에 설치됩니다. (보통 /usr 또는 /usr/local)
4.2.2. Run options 설정 ¶Project 메뉴 -> Project options 선택 -> 왼쪽 컬럼에서 Run options 선택
디버깅 기능을 사용하기 위해서는 Main Program -> Excutable: 에서 내가 개발하고 디버깅 하고자 하는 실행파일의 위치를 지정해야 합니다. 기타 run argument, working directory, 환경변수 설정 등을 여기서 할 수 있습니다.
4.4. 컴파일, install ¶프로그램을 최초 컴파일 하기 전에 Build 메뉴의 각 항목을 차례대로 실행합니다.
1. Run automake & friends : configure 스크립트를 만들어 줍니다.
2. Run configure : Makefile 을 만들어 줍니다.
위 작업들은 빌드 시스템 구성이 바뀔 때마다 실행해 주어야 합니다. (즉 새로운 파일이 추가되거나, 파일 이름이 바뀌거나, 컴파일 옵션이 바뀌거나 등등..) 한번 Makefile 이 실행되면 빌드 시스템 구성이 다시 바뀌지 않는 한 위의 작업을 반복할 필요는 없습니다.
위의 작업들을 완료했다면 Build 메뉴->Build Project 를 실행하여 빌드합니다. 그 뒤 Install 을 실행하면 아까의 configure options 에서 --prefix 로 지정한 위치에 파일이 복사됩니다.
|
You attempt things that you do not even plan because of your extreme stupidity. |