기존에 Qt로 프로그램을 짜 봤다면 Qt/S60을 쓸 수 있다는 게 얼마나 흥분되는 일인지 알 수 있다. Qt/S60은 트롤텍이 노키아에 인수된 후부터 활발히 개발된 Qt 포트이다. 윈도, 맥 OS X, (임베디드) 리눅스 이외 기종으로 제일 처음 나온 포트는 윈도 모바일이지만, 노키아에 인수당한 이후 윈도 모바일용 Qt보다는 Qt/S60에 더 많은 신경을 쓰고 있음을 알 수 있다. 마에모도 Qt로 전향할 예정인데다가, 든든한 데스크톱 우군 KDE가 버텨 주고 있어서 지금 안드로이드나 아이폰에 부화뇌동하느니 Qt 프로그래밍을 익혀 두는 것도 몸에 나쁘지는 않을 것이다.
Qt의 모토는 Code Less, Create More, Deploy Anywhere다. 노키아 인수 전까지는 앞 두 마디만 사용했으며, 노키아가 Qt 로고를 현재처럼 바꾼 이후 Deploy Anywhere가 같이 추가되었다. 과연 Qt로 짠 소스 코드가 Deploy Anywhere가 될 수 있을지 한 번 실험해 보기로 했다. 일단 Qt/S60을 구해서 설치해 보자. 2009년 11월 현재 Qt 홈페이지 페인 화면에 Qt/S60 4.6.0 베타 링크가 걸려 있으므로, 일단 이거 SDK를 다운받아 두자. Qt/S60은 S60을 기반으로 움직이므로, 그 까다롭다는 S60 SDK도 같이 설치되어 있어야 한다. Carbide.C++(IDE), S60v3 FP2 SDK, Open C/C++ 플러그인 삼대천왕을 설치하면 된다. 전부 한 덩치 하는 몸이라서 시간이 꽤 걸렸고, 이 순서대로 설치하지 않으면 미묘한 오류가 발생한다. 설치를 마음대로 했다가 3시간을 삽질하는 일이 없길 바란다.
그 다음 Qt/S60을 설치한다. 깔려 있는 SDK를 자동으로 인식하고 그에 맞는 Qt를 설치해 준다. 설치가 끝난 다음, Carbide.C++ 쪽 환경 변수를 먼저 등록한 다음 Qt/S60 명령 프롬프트를 실행해야 라이브러리 및 컴파일러 경로를 헤매지 않는다. 이것 때문에 1시간을 또 고생했다. 여기까지 잘 왔으면, Qt 명령 프롬프트를 실행시켜서 demos나 examples 폴더로 이동한 다음, qmake-make를 실행시켜서 예제를 빌드해 보고, make run을 통해서 각각 예제를 실행시켜 본다. make 실행 시 기본 타겟은 debug-winscw로, 에뮬레이터를 통해 실행된다. make distclean을 실행시켜 줘야 에뮬레이터에서 흔적이 사라지므로 테스트 후 실행시켜주는 게 좋다. S60 SDK에 내장된 에뮬레이터는 그럭저럭 쓸만하지만, 한글 글꼴이 기본적으로 없다는 건 알아 두어야 한다.
정상 작동을 테스트해 보았으면 기존 Qt 프로그램을 포팅해 보자. QMake를 사용하는 프로젝트라면 아무 무리 없이 Qt/S60으로 포팅 가능하다. 얼마든지 리눅스에서 Qt로 짰던 프로그램을 S60으로 ‘소스 한 줄 고치지 않고’ 포팅 가능하다. 심비안 플랫폼은 모든 실행 파일에 고유 UID가 붙는다. 이게 겹치면 시밤쾅하기 때문에 프로그램을 배포하려면 UID를 따야 한다. 돈 내는 건 없으므로 전문적으로 뭔가를 만들어 보려면 UID를 신청해 보자. 발급받은 UID가 있으면 .pro 파일에 UID를 적어 주고, 없으면 qmake가 테스트용 UID를 만들어 준다. make release-gcce를 내린 다음 make sis라는 명령을 내리면 sis 파일을 만든다. 테스트 인증서로 서명되었으므로, 실제 배포할 때는 인증서 문제를 해결해야 한다. 이 외에도 약 10MB에 달하는 Qt 라이브러리 설치 문제도 신경써야 한다. 현재는 Qt/S60이 베타 단계라서 배포할 때 신경이 거슬리겠지만, 정식 릴리즈가 나온 다음에는 휴대폰 롬에 통합될 수도 있거나 용량이 더 적어질 수도 있다.
현재 Qt 4.6.0 베타는 S60에서 살짝은 껄끄럽게 돌아간다. S60v5는 터치 인터페이스를 지원하지만 S60v3은 위젯을 돌아다닐 때 키패드를 사용해야 하며, 심비안 네이티브 프로그램에 비해서 살짝 멈칫하는 게 느껴진다. FEP도 잘 붙어서 한글 입력도 무리없이 할 수 있다. 대부분의 UI 구성요소는 S60 테마를 그대로 따르므도 생긴 거의 이질감은 전혀 느껴지지 않는다. Qt의 장점은 여기서 드러난다. 오늘 오후동안 짜 본 노래방 검색 프로그램을 휴대폰에서 한 번 돌려 보았다. Qt의 GUI와 SQL 부분을 사용한다. PyS60으로 짜려고 했으나, SQLite 모듈이 없어서 Qt의 SQLite 모듈을 사용하려고 Qt를 사용했다. 아직까지 휴대폰에서 좀 동작이 끊기는 감이 없잖아 있지만, 아직 Qt/S60은 베타 단계이기 때문에 정식 릴리즈가 되면 더 빨라질 가능성이 열려 있다.
기존에 Qt로 프로그램을 만들어 봤으면 복잡한 S60 C/C++를 배우지 않고도 S60 휴대폰에 프로그램을 바로 올릴 수 있으므로, 뭔가 만들어보고 싶으면 과감하게 도전해 보자.
ps. 노래방 검색 프로그램은 아직 개발 중이며, 역시 아직 개발 중인 Qt/S60 라이브러리를 사용한다. Qt/S60이 정식 출시되는 대로 공개할 예정이다.