Sablog Models/모바일·임베디드

프로그래머가 말하는 PMP 100배 활용 - (3) PMP용 Qt/PMP에서 개발하기.

어­리 2010. 8. 17. 17:18
(헐)
나는 Qt Creator를 WinCE에 포팅(...)하는 것을 목표-_-로 하고 달려들기 시작했다.
별로 어려운 과정은 아니다.

...라고 하기에는 이게 필요하다.
Microsoft Visual Studio 2005 / 2008 Professional Edition - Visual C++
자세한 내용은 3번에서 언급합니다.


이 글은 현재 시점을 기준으로 쓰인 글이며, 변경될 소지가 있습니다.
그러나 변경될 경우에도 이 글에서 소개하는 방법과 절차는 어느 정도 유효합니다.


1. Qt Creator 소스 패키지 + Qt 4.7 내려받기 http://qt.nokia.com/downloads


Qt Downloads 페이지에 가면 위 그림과 같이 소스 패키지를 배포하고 있습니다. 이걸 받으면 됩니다.
말 그대로 시작이 반인 상황입니다.

4.5까지는 용도별로 소스를 다르게 배포했고, 4.6에서는 통합되었습니다.
이런 Qt가 4.7부터는 미리 configure되어 설치 파일로 배포됩니다.
그러나 Qt 4.7.0 Beta2: Windows (Visual Studio 2008) 따위에 속았다가는 시간 제대로 낭비합니다.
configuration에는 성공하지만 프로젝트 컴파일 중 X86과 THUMB가 충돌하는 사고가 나게 됩니다.
4.7도 통합된 소스를 배포하니, 소스를 받으세요.


Qt Creator 2.0.0을 쓰고 있습니다.
귀찮다고 (혹은 베타 버전이라고) 4.7을 받지 않으면 위와 같이 에러를 뱉고 죽어 버리니 받으세요.

조만간 Qt 4.7이 정식으로 배포된다면, 그걸 받으시면 됩니다.
정식판의 링크는 다운로드 페이지 위쪽에 있겠죠...? (몰라)


2. 설치 (사실은 압축 해제)

현재 배포되고 있는 버전인 Qt 4.7.0-beta2를 설치하는 모습입니다. 예제만 더럽게 많네요.
LGPL인 만큼 예제가 많아서 좋은 Qt입니다. (뭐야)

* Qt Creator 바이너리 파일은 필요 없습니다.
* 위 화면은 연출된 조리예이며 실제와 다를 수 있습니다. (Windows VS2008)

다시 한 번 말씀드리지만,
설치용 Qt가 아닌, Qt 소스를 받아야 아래 과정을 올바르게 수행할 수 있습니다.
실제로는 압축을 해제하는 광경이 등장합니다.


3. Qt를 configure, build (nmake)

여기서 Qt가 무엇인지 알고 있을 필요가 있는데, 라이브러리입니다.
Qt는 당연히 컴파일 능력이 없습니다.
Qt SDK의 주요 성분인 Qt Creator IDE의 컴파일 능력은 사실 GCC/G++ mingw입니다.
앞으로 배포될 Qt Creator에서는 Visual Studio를 컴파일러로 인식해 줄지 의문입니다만...
어쨌든 우리에게는 Qt를 링크해 줄 컴파일러가 필요한데 이 때문에 위에서 VS를 언급한 것입니다.

VS2008이 있다고 가정하고 진행합니다.

주의: Microsoft Visual Studio 2008 이외의 버전이 설치된 컴퓨터의 경우 실패할 수 있습니다.
제 경우 Windows Vista에 VC2008, 그 위에 VC98(VC6)을 사용하고 있는데,
VC2008, CE50SDK, Qt, VC6 모두 재설치/삭제 (VC6는 삭제)를 수십 번 거듭해도 망하는군요.
결국 Windows XP (Pentium 4 2.7GHz) 환경에서 하니 꼬박 6시간 정도 걸렸습니다... 내 시간...
하긴 cl은 항상 모노스레드 프로세스니까 다른 환경에서도 별 차이 없을 겁니다.

Qt를 설치하고 configure해야 합니다.
일단 받아서 설치하면 win32-msvc2008 플랫폼으로 설정되어 있으나,
지정하지 않으면 대상 플랫폼이 달라서 원하는 대로 실행할 수 없습니다.

순서는 다음과 같습니다.
  1. 깨끗한 명령줄 콘솔을 준비.
  2. vcvars32.bat(vsvars32.bat)을 실행, 적절한 환경 변수를 설정.
  3. configure -platform win32-msvc2008 -xplatform wince50standard-armv4i-msvc2008
    가능한 플랫폼과 크로스 플랫폼의 종류에 관해서는 Qt 홈페이지를 참조하세요.
    o를 반환해 Open Source Edition 선택, y를 반환해 라이선스에 동의.
  4. 끝나면 이런 메시지가 방출됩니다.
    Qt is now configured for building. To build Qt, just run: setcepaths.bat && nmake.
    To reconfigure, run 'nmake confclean' and configure.
  5. 원래는 이렇게 환경 변수 설정을 해 주어야 합니다.
    set INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include;C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Include\Armv4i
    set LIB=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\lib\armv4i;C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Lib\ARMV4I
    set PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;%PATH%
    그러나 setcepaths.bat 파일이 있으므로 명령줄에 이렇게 입력하기만 하면 됩니다.
    setcepaths.bat && nmake
  6. 알아서 끝납니다.


쓰던 컴퓨터에서 분명히 시키는대로 정확히 잘 했는데 몇 번이나 configuration에 실패하신다면...
그냥 다른 컴퓨터에 설치하시거나 OS를 밀어 주는 게 정신 건강에 좋습니다.

팁: Qt는 독립성이 있는 라이브러리이므로,
configure 후 외장하드에 담거나 외장하드에 담은 채 configure해도 아무 문제가 없으며,
이렇게 하면 다른 컴퓨터에서도 사용할 수 있습니다.


4. Qt를 이용하여 Qt 프로젝트 - Qt Creator를 컴파일

환경 변수의 %PATH%에 qmake 위치를 등록해 주면 qmake를 자유롭게 쓸 수 있습니다.
제어판 - 시스템 - 고급 시스템 설정 - 환경 변수 - path를 수정, 경로를 추가해야 합니다.
(NT 이하의 경우 C:\autoexec.bat를 수정해야 한다고 하는군요.)
경로는 C:\Qt\4.7.0-beta2\bin입니다.

지금은 Qt Creator를 컴파일하려 하지만, Qt 프로젝트 빌드 방법은 모두 똑같습니다.
프로젝트 파일이 있다면 qmake (qmake -project) 명령은 쓰지 않습니다.

call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat"
call setcepaths.bat wince50standard-armv4i-msvc2008
qmake
qmake -spec wince50standard-armv4i-msvc2008
nmake

배치 파일을 만들어 놓는 것도 쓸만한 방법입니다. (각 줄 처음에 '@'를 쓸 것!)

Qt 설치 시에 제공받는 온갖 예제 프로그램들도 사용할 수 있습니다.


이것으로 마칩니다.
글을 블로그에 올려 놓은 채 공개, 발행하기까지 한 달이 넘게 걸렸군요.
사실 전 building까지 끝났는데 막상 컴파일 결과물이 작동을 안 하고..
Qt Creator의 CTRL_C_EVENT인가 하는 게 거부되고 (그 전에 errno.h가 빠졌고) 하면서 사실상 실패입니다.

좋은 소식 가진 분, 소개 부탁드립니다!