2016/06/24

CodeLite에서 cmake plugin 사용


CodeLite은 c++/wxWidgets 기반의 cross-platform 오픈소스 IDE 개발 Tool이다. Code::Blocks가 요즘에도 계속 개발되고 있는지 모르겠는데 중간에 개발이 중단됐었다. Code::Blocks와 유사하면서도 현재까지 명맥을 이어온 몇 안되는 훌륭한 오픈소스 c++ 개발 툴 중의 하나이다. 물론 다른 IDE들 처럼 PHP나 Python 등 다른 언어 개발 Tool로도 사용할 수 있다. Qt Creator가 Qt 기반 프로젝트에 최적화되어 Upgrade 되는데 비해 상대적으로 CodeLite는 wxWidgets 기반 프로젝트에 최적화 되어 발전해 왔다. 하지만 어떤 면에서는 CodeLite가 범용 c++ 프로젝트 개발 Tool로써 더 적합해 보이기도 한다. 머 둘다 훌륭한 개발 Tool이기 때문에 호불호를 따지는게 큰 의미가 있는 건 아니다. 참고로, 우분투 16.04에서 패키지로도 설치할 수 있는데 CodeLite 9.1.0 버전이 설치된다.

clang 기반의 code completion, function/type-info tooltip, debugging, code navigation, code refactoring, reference search, UI theme 같은 기본 기능 외에 막강한 plugin들이 있는데 valgrind, source code formatter, qmake, git, svn, call graph, wxFormbuilder 등의  plugin 외에 cscope과 cmake plugin은 꽤 실용적인 plugin 이다.

여기서는 최근의 Open Source들이 거의 cmake 기반으로 개발되고 있어서 CodeLite에서 cmake plugin을 사용해서 cmake 기반의 Open Source 프로젝트를 import해서 사용하는 방법에 대해서 정리한다. GNU autoconf/automake를 사용하고 있는 오픈소스 프로젝트들은 오래된 프로젝트이거나 한물간 프로젝트일 수도 있는 것이 현실이기 때문이다. cmake plugin은 CodeLite 최신 버전에서 기능이 강화되고 있기도 해서 다른 plugin에 비해 설정이 다소 복잡하다. Qt Creator에서도 cmake 프로젝트를 import할 수 있지만 개인적으로 CodeLite이 소스 분석에 더 도움이 되는 듯하다.

Open Source 프로젝트 import

Workspace Context Menu에서 [Create New Project] 선택 후 나타나는 [New Project Wizard]에서, [Template] > [Custom Makefile] > [New Project]의  [Project name:]을 import 하려는 폴더 명으로 설정하고, [Project path:]는 [...] 버튼을 선택해서 import 하려는 폴더 위치를 찾아서 지정해 주면 된다. 이때 [Create the project under a separate directory] checkbox는 unchecked 상태라야 한다. 이제 [Next >] 버튼을 선택하면 project toolchain을 설정할 수 있는데 [Build System:]에 기본으로 [CMake]로 설정되어 있다. [Finish] 버튼을 선택해서 [New Project Wizard]를 마무리한다.

이제 [Workspace Tree]에 새로운 프로젝트가 추가됐는데 이름만 올라가 있다. 실제 파일들을 import하기 위해서, 새로 생성된 프로젝트 선택 후 마우스 우클릭시 나타나는 Project Context Menu 들 중에 [Import Files From Directory...]를 선택하면 [Import Files] 창이 뜨고 import할 폴더 tree를 보여주고 왼쪽에 checkbox 들이 있는데 tree의 최상위 폴더를 선택하면 하위 폴더들이 모두 선택된다. 창 밑에 확장자들을 보여주는데 이 놈들만 import 한다. [OK] 버튼을 누르면 Workspace에 새로 생성한 프로젝트 밑에 import한 폴더와 파일들을 tree로 확인할 수 있다.

Active Project 설정

Workspace 밑에 여러 개의 프로젝트가 있다면 새로 생성한 프로젝트가 Active Project가 되도록 설정해 주어야 한다. Workspace 탭의 tree에서 새로 import한 프로젝트를 선택해서 Project Context Menu 들 중에 [Make Active(double click)]을 선택하거나, 그냥 프로젝트가 선택된 상태에서 마우스 double click을 해 주면 된다.

CMake Plugin 설정

import한 cmake 기반의 Open Source 프로젝트를 codelite에서 build 하려면 cmake plugin 설정을 해 주어야 한다. 설정은 Project Settings 창에서 해주면 되는데 Workspace tree에서 새로 생성한 프로젝트 선택 후 Project Context Menu 들 중에 [Settings...] 메뉴를 선택하면 된다.

참고로, 아래 설명에서 입력할 실제 값들은 => 후의 [ ] 괄호 안의 것들이다.

1. [Project Settings] 창 > [Customize] > [Custom Build] tab 에서,
1.1 [Working Directory:] => [$(ProjectPath)/build-$(ConfigurationName)] 설정
1.2 [New] 버튼 > [Build Target] 창에서 [Target Name:] => [CMake] 로 하고, [Command:] => [cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=1] 설정
설정 완료 후, [Apply] 버튼 선택,

2. [Project Settings] 창 > [General] tab 선택 후,
2.1 [Build] > [Intermediate Folder] => [$(ProjectPath)/build-$(ConfigurationName)] 설정
2.2 [Execution] > [Executable to Run/Debug] => [$(ProjectPath)/build-$(ConfigurationName)/$(ProjectName)] 설정
설정 완료 후, [Apply] 버튼 > [OK] 버튼 선택하면 설정이 끝난다.

사실 위의 설정은 [Debug] 모드에 대한 것이었고 [Release] 모드에서도 위의 1~2의 과정으로 설정해 주어야 한다. [Release] 모드는 Workspace 탭에서 위쪽에 프로젝트명 옆에 [Debug] 선택 상자를 선택하면 나타난다.

다른 설정은 동일 한데 1.2에서 [Command:] => [cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=1]로 설정해 주면 된다.

CMake Plugin 실행 및 Project Build

이 부분이 좀 직관적이지 않을 수 있는데 CodeLite 최신 버전에서는 프로젝트 선택후 Project Context Menu 들 중에 [Run CMake]가 새로 생겼다. 그런데 이걸 사용하면 안된다. Custom Project로 CMake 프로젝트를 import 한 것이기 때문에 Context Menu 들 중에 [Custom Targets...] > [CMake] 메뉴를 선택해야 한다. 이제 Makefile을 생성하게 되는데 CodeLite의 아랫쪽에 [Output View] > [Build] 탭에 에러가 0개이면 성공한 것이다.

프로젝트를 build 하려면 다시 Project Context Menu 들 중에 [Build]를 선택하면 된다. 성공적으로 build가 됐다면 <Ctrl>+<F5> 단축키나 CodeLite Main Menu의 [Build] > [Run]을 선택해서 실행해 볼 수 있다.

참고 사항

Codelite의 CMake Plugin은 최근에 기능이 강화되고 있는 중이라서 약간의 버그도 있고 설정이 다소 혼란스럽고 직관적이지 않은 면이 있는데, 향후 설정 방법이 달라질 수도 있을 것이다.

댓글 없음:

댓글 쓰기