Windows Mobile에 Qt를 포팅하는 방법에 관한 아주 멋진 글을 찾았다. 블로그 기사가 일러주는 대로만 작업하면 거의 한방에 Qt 포팅이 끝난다. 존경 받아 마땅한 개발자다.

http://punbear.tistory.com/tag/Wince

나는 PDA 프로그래밍에 익숙하지 않다. Windows Mobile을 위한 프로그램을 개발하고 이를 PDA에 심어 실행시키는 절차가 낯설었다. 위에 소개한 블로그 기사 말미에 샘플 어플리케이션 실행에 관해 약간 덧붙이고 싶은 이야기가 있다.

Qt Example 실행하기

1. 샘플 선정
VS 2005로 $(solution_root)\examples\examples.sln 을 로드하면 수십개의 Qt 샘플 프로젝트들이 로드된다. 이중 pixelator 프로젝트가 남들에게 보여주기 괜찮았다. 이 프로젝트를 StartUp Project로 선택한다.

<<그림- StartUp Project 선택하기>>

2. 에뮬에서 실행하기
실행 타겟으로 Windows Mobile 6 Classic Emulator를 선택한다.

<<그림- 에뮬레이터 선택하기>>

3. 실행하기
실행 메뉴를 선택하면, Windows Mobile 에뮬레이터가 실행된다. 한참 기다리면 piexelator 어플이 실행된다.

<<그림- 실행하기>>


<<그림- pixelator 샘플 프로그램>>

4. 단말에서 실행하기
ActiveSync로 단말에 Qt DLL 들과 실행할 샘플 어플리케이션(pixelator.exe)을 같은 폴더에 복사하고, 단말의 프로그램 매니저로 이를 실행시키면 된다. 이때 C:\Program Files\Microsoft Visual Studio 8\VC\ce\Dll\armv4i 폴더에 있는 msvcr80.dll 도 함께 단말에 복사시켜줘야 한다.
복사해야할 파일 목록은 다음과 같다.

$(solution_root)\lib 폴더에 있는 다음 파일들.
이 파일들은 Qt 빌드 결과물들이다.
QtCore4.dll
QtDesigner4.dll
QtDesignerComponents4.dll
QtGui4.dll
QtNetwork4.dll
QtScript4.dll
QtSql4.dll
QtSvg4.dll
QtTest4.dll
QtXml4.dll

VS2005의 run-time library DLL 파일.
C:\Program Files\Microsoft Visual Studio 8\VC\ce\Dll\armv4i 폴더에 있다.
msvcr80.dll

샘플 어플리케이션 파일.
$(solution_root)\examples\itemviews\pixelator\release 폴더에 있다.
pixelator.exe

이상이다. 댓글과 트랙백 많이 환영한다. 한글로 된 개발 문서가 넘쳐나는 세상이 빨리 와야 한다.
저작자 표시 비영리 변경 금지
신고
Posted by ingee
TAG qt, webkit, 웹킷

댓글을 달아 주세요

WebKit에 대하여

WebKit 2008.11.04 19:21
위키가 워낙 잘 정리해 놓아서, 덧붙여 메모할 필요가 느껴지지는 않지만, 웹킷에 대한 사실과 느낌을 간단히 정리한다.

1. 작고 빠른 브라우저 엔진
웹킷은 현존하는 브라우저 엔진 중에서 거의 유일하게 실 단말 레퍼런스를 가지고 있는 놈이다. 애플의 iPhone과 노키아의 S60 단말에 실린 브라우저가 WebKit을 엔진으로 사용하고 있다. 다시말해 웹킷은 현존하는 브라우저 엔진 중에서 가장 작고 빠르다고 평가받고 있는 엔진이다.

2. 업계 표준, 오픈소스 브라우저 엔진
웹킷은 앞서 언급한 애플의 사파리 브라우저, 노키아의 S60 브라우저 뿐 아니라, 구글 크롬 브라우저, 구글 안드로이드 브라우저, 어도비 AIR 브라우저 등에 적용되어 발표됐거나 발표를 앞두고 있다. 웹킷은 애플이 시작해서, 현재도 열성적으로 개발을 추진하고 있는 오픈소스 프로젝트이다. GPL에 비해 덜 엄격한 LGPL/BSD 라이선스 모델을 적용을 하고 있기 때문에 비교적 자유롭게 상용 솔루션을 만들 수 있다.

3. 막강한 기능의 브라우저 엔진
웹킷은 AJAX를 지원한다. HTML 4.01, CSS 2.0, JavaScript 1.5 를 충실히 지원할 뿐 아니라 XMLHttpRequest 객체도 지원한다. 현재 핸드폰에 실려있는 잡다한 브라우저가 만들어내는 네이버 화면과 iPhone에 실린 웹킷이 만들어내는 네이버 화면에는 현격한 품질차이가 존재한다. 웹킷은 기본을 갖춘 브라우저다. 뿐만 아니라 새로 정립되고 있는 최신 표준을 위한 마일스톤도 세워져 있다. HTML 5 같은 신규 표준을 가장 빨리 지원하는 브라우저 엔진은 아마도 웹킷이 될 것이다.

4. 브라우저 엔진일 뿐
웹킷은 브라우저 엔진일 뿐 브라우저가 아니다. 네트웍, 메모리, UI 등의 모듈을 적절히 포팅해주어야 브라우저가 될 수 있다.

애플은 소프트웨어 개발자 수가 얼마 되지 않는다고 한다. 얼마 되지 않는 개발자로 그토록 유려한 제품 라인을 제공할 수 있는 비결은 아마도 오픈소스의 적절한 활용일 것이다. 웹킷의 발전과 응용에 동참하는 '한국어를 사용하는 개발자'의 수가 많아지기를 희망한다. 지금은 사소한 정보라도 얻으려면 꽤 답답하다.
저작자 표시 비영리 변경 금지
신고
Posted by ingee

댓글을 달아 주세요

  1. sMiLo 2009.01.06 11:38 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 저도 webkit 쪽을 살펴보고 있는데, 잠시 방치해놨던 블로그를 다시 활성화시켜봐야 겠다는 생각이 드는군요. ^^ 북마크 시켜놓고 자주 들르겠습니다. 좋은 하루 되세요.

  2. seungzzang 2010.02.18 17:33 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요. 저도 webkit을 연구하고 있습니다. 블로그에 자주 들러서 정보 얻어가겠습니다. 모르는 것 많이 가르쳐주시면 감사하겠습니다. ^^

  3. -_-v 2010.04.15 18:56 신고  댓글주소  수정/삭제  댓글쓰기

    웹킷을 시작하는 사람입니다. 많이 배워가고 얻은 만큼 나눠주도록 하겠습니다. ^^

WebKit 빌드 성공담

WebKit 2008.10.31 17:09
WebKit (이후 웹킷) 소스를 다운 받아 빌드를 시도하고 있다. 소스를 개발하는 것도 아니고, 다른 사람들이 잘 만들어 놓은 소스를 받아다 빌드만 하는건데... 왜 이리 힘든지... 빌드 하며 겪은 시행 착오를 메모 해둔다.

우선 사전에 확인할 사항이 몇개 있다.

1. unix 파일 포맷
빌드 과정에 cygwin 상에서 *.sh 파일들이 몇개 실행된다. 근데, 이놈들이 dos 텍스트 모드다. 파일 찾기로 *.sh을 모두 찾아서 dos2unix 해줘야 한다. 그러지 않으면 "\r 파일을 처리할 수 없다... 어쩌구..." 하는 에러가 출력된다.
*.sh 파일만 바꾸면 될 줄 알았는데, 빌드에 관련된 소스 파일들을 모두 변환해줘야 한다. 빌드 할 때, perl 을 이용해서 소스를 자동 생성하는데, 텍스트 파일 모드를 변환하지 않으면 에러가 발생한다.

2. cygwin 툴 설치
WebKit 빌드를 위해 필요한 cygwin의 모든 패키지가 설치되어 있는지 확인해야 한다. 당연히 모두 설치되어 있을 거라고 자신했는데, 실상은 그렇지 않았다. 조금만 겸손하게 확인해도 많은 시간을 절약할 수 있다. 겸손한 마음으로 http://webkit.org/building/tools.html 를 한번 더 확인해보자.

웹킷을 갖고 작업하는 변방의 개발자들 끼리 많은 정보를 공개했으면 좋겠다. 댓글이나 트랙백 아주 많이 환영한다.



(win xp 32bit 환경에서)
WebKit
빌드& 실행 과정 정리

 

 

개발툴 설치, 특히 필요한 cygwin의 모든 패키지가 설치됐는지 확인

참조 URL

l  http://webkit.org/building/tools.html

l  http://trac.webkit.org/wiki/BuildingOnWindows

 

할일

-       VS2005 설치

-       VS2005 patch 설치

-       Cygwin 설치

-       QuickTime SDK 설치

 

 

 

WebKit 소스 확보

참조 URL

l  http://webkit.org/building/checkout.html

l  http://svn.webkit.org/repository/webkit/trunk(subversion 소스 URL)

 

할일

-       subversion client(TortoiseSVN)으로 http://svn.webkit.org/repository/webkit/trunk 소스 가져오기

 

 

 

WebKitSupportLibrary.zip 을 작업 디렉토리 루트에 복사

참조 URL

l  http://webkit.org/building/checkout.html

 

할일

-       http://developer.apple.com/opensource/internet/webkit_sptlib_agree.html 에서 WebKitSupportLibrary.zip 파일을 다운로드 하여 WebKit 프로젝트 홈디렉토리에 복사

 

 

 

소스 업데이트

참조 URL

l  http://webkit.org/building/checkout.html

 

할일

-       WebKitTools/Scripts/update-webkit 스크립트 실행

 

사용자 삽입 이미지

 

 

모든 소스 파일을 unix text file로 변환 (dos2unix)

참조 URL

l  http://trac.webkit.org/wiki/BuildingOnWindows

l  *.sh 파일만 변환하면 될 줄 알았는데, 그게 아님. 모든 소스를 변환해야 함. 빌드과정에서 perl을 통해 소스파일을 생성할 때 문제가 생김.

l  빌드에 참여하는 소스 코드만 변환해야 시간을 절약할 수 있다. 소스 디렉토리에는 테스트 관련 파일들이 무척 많다. 전부 변환하려면 세월이다.

 

할일

-       *.sh 변환

find . -name "*.sh" -exec dos2unix {} \;

-       JavaScriptCore/* 변환

find JavaScriptCore -type f -exec dos2unix {} \;

-       JavaScriptGlue/* 변환

find JavaScriptGlue -type f -exec dos2unix {} \;

-       WebCore/* 변환

find WebCore -type f -exec dos2unix {} \;

-       WebKit/* 변환

find WebKit -type f -exec dos2unix {} \;

-       WebKitLibraries/* 변환

find WebKitLibraries -type f -exec dos2unix {} \;

 

사용자 삽입 이미지

 

 

환경변수 WEBKITOUTPUTDIR, WEBKITLIBRARIESDIR 설정

참조 URL

l  http://trac.webkit.org/wiki/BuildingOnWindows

 

사용자 삽입 이미지

 

 

VS2005로 WebKit sln 파일을 로드하여 컴파일 옵션 수정

일러두기

l  VS2005 프로젝트 파일이 build-webkit 스크립트에도 동일하게 사용된다. 그래서 ~/WebKit/win/WebKit.vcproj/WebKit.sln 의 빌드 옵션을 설정하면, 스크립트(WebKitTools/Scripts/build-webkit)로 빌드 할 때도 여기서 설정한 빌드 옵션이 적용된다.

 

할일

-       VS2005~/WebKit/win/WebKit.vcproj/WebKit.sln 로드

-       아래 프로젝트의 컴파일러 옵션에 /wd4819 추가 ( 이렇게 하지 않으면 빌드 과정에서 문자열 코드 페이지관련 워닝을 낸다. 영어권 개발자들은 경험하지 못할 문제다. 해당 워닝을 무시하지 않으면 이를 에러로 취급한다. )

QTMovieWin, WebCore, WebKit, TestNetscapePlugin

 

사용자 삽입 이미지

 

 

빌드

할일

-       WebKitTools/Scripts/build-webkit --debug 실행

 

사용자 삽입 이미지

 

 

빌드 성공!

 

사용자 삽입 이미지

 

 

웹킷 실행, 디버그

참조 URL

l  http://webkit.org/building/debug.html

 

할일

-       WebKitTools/Scripts/debug-safari 실행 (PC에 Safari 브라우저가 설치되어 있어야 한다.)

-       debug-safari를 실행하면 VS2005 디버깅 환경이 뜬다.

-       소스를 열고, 원하는 지점에 브레이크 포인트를 설정한다.

-       F5를 눌러 디버깅을 시작한다.

 

사용자 삽입 이미지

 

 

debug-safari 스크립트로 웹킷을 실행시키려면, PC에 사파리 브라우저가 설치되어 있어야 한다. 다시 한번 말하지만, 웹킷은 브라우저가 아니라 브라우저 엔진이다.

(
)

 

저작자 표시 비영리 변경 금지
신고
Posted by ingee
TAG webkit, 웹킷

댓글을 달아 주세요

  1. 질문드립니다 2009.01.13 16:38 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요? 저는 위의 방법대로 win xp, vs 2005 pro에서똑같이 했는데 컴파일시 pthread.h 와 unicode/uchar.h를 못찾아서 에러가 납니다..cygwin 문제일까요?

    • ingee 2009.11.12 16:26 신고  댓글주소  수정/삭제

      1년이 지나 다시 한번 WebKit 최신소스를 빌드하면서 같은 현상을 확인했습니다. 제경우엔 WEBKITLIBRARIESDIR 환경변수가 문제였습니다.

      WEBKITOUTPUTDIR 은 개발자 맘대로 path를 정해도 되지만, WEBKITLIBRARIESDIR 은 WebKit 소스 트리중에 존재하는 $(SrcHome)\WebKitLibraries\win 을 지정해야 합니다.

      WEBKITOUTPUTDIR과 WEBKITLIBRARIESDIR 모두 path를 Windows 스타일 ('/'로 구분하는 게 아니고, '\'로 구분하는 스타일)로 지정해야 하고, full path를 적어줘야 합니다.

      같은 문제를 겪는 분들께 도움이 되면 좋겠습니다.

  2. 질문드립니다 2009.01.16 16:24 신고  댓글주소  수정/삭제  댓글쓰기

    확인 결과 둘다 뜹니다. JavaScriptCore나 WTF프로젝트의 추가 include 패스에 "$(WebKitLibrariesDir)\include\pthreads", "$(WebKitLibrariesDir)\include\icu"가 있는데 문제는 해당 경로에 pthread.h나 unicode/uchar.h 같은 파일이 없어서 컴파일 에러가 납니다. 제가 소스를 Nightly꺼로 받았는데 혹시 이 소스가 실제 서버에 있는 소스와 일치하지 않는게 아닐까요? 한번 해보고 알려드리겠습니다

    • ingee 2009.11.19 13:26 신고  댓글주소  수정/삭제

      이전에 달았던 댓글이 의미 없는 것 같아 삭제했습니다. 바로 윗 댓글이 도움되면 좋겠습니다.
      WebKitLibrariesDir 환경 변수에 지정한 path가 문제라고 추측합니다. WebKitLibrariesDir 환경 변수에는 WebKit 소스트리 내부에 존재하는 WebKitLibraries\win 폴더에 대한 full path를 지정해야 합니다.

  3. 질문이요 2009.01.20 16:14 신고  댓글주소  수정/삭제  댓글쓰기

    저도 위에 질문드립니다..<-이분과같은현상인것 같은데...
    어디가 문제 인걸까요??
    환경변수설정도 제대로 하고,,
    그대로 했는데, 에러가 납니다..ㅠ

  4. tommy 2009.04.05 13:00 신고  댓글주소  수정/삭제  댓글쓰기

    최근에 웹킷을 빌드해야하는 업무를 맡게되었는데 ingee님의 글이 많은 도움이 되었습니다(아직 빌드는 못했습니다)
    근데 빌드 과정 중 WebKitLibrariesDir과 WebKitOutputDir 이 두 개의 환경변수는 직접 윈도우 환경변수로 셋팅해줘야 하더군요
    cygwin에서 export 로는 VC에 적용이 안되고 둘 다 해줘야 하는건지.. 아직 저도 해보고 있는 중인지라..
    저 두 개가 없어 문제가 생긴적이 있었습니다.
    아무튼 웹킷을 사용하는 분들 모두 좋은 결과가 있길 바랍니다

    자주 들리도록 하겠습니다
    좋은 하루 보내세요

  5. tommy 2009.04.05 19:39 신고  댓글주소  수정/삭제  댓글쓰기

    또 접니다 위의 두 환경변수는 cygwin과 윈도우에 동일하게 셋팅해줘야 하더군요
    제 경우 "pthread.h"와 "unistd.h" 문제는 이 방법으로 해결했습니다
    여전히 빌드는 못했습니다 ㅜㅜ;

    그런데 전 WebCore를 빌드하면서 오류가 발생하네요

    WebCorePrefix.cpp
    D:\Project\WebKit\WebKitLibraries\win\include\ConditionalMacros.h : error C2220: 경고가 오류로 처리되어 생성된 'object' 파일이 없습니다.

    이후 워닝이 몇개 발생하긴 하는데 저 에러 때문에 아무것도 안되네요
    빌드 순서를

    윈도우에서 TortoiseSVN 으로 소스 checkout -> 체크아웃중 에러발생
    리눅스에서 소스 checkout -> 윈도우로 복사 -> 빌드
    cygwin에서 svn 으로 checkout -> 빌드

    다 해봐도 결국 저 에러에서 걸립니다
    막막하네요..

  6. tommy 2009.04.05 20:39 신고  댓글주소  수정/삭제  댓글쓰기

    결국 빌드 성공했습니다
    웹킷은 엔진이다.. 라는 말을 명심해야겠네요
    앞으로도 자주 들르겠습니다
    수고하시고 좋은 하루 되세요

    • ingee 2009.04.06 10:36 신고  댓글주소  수정/삭제

      주말 늦은 시간까지 고생하셨군요. 자주 들러주시고 하시는 일에 대한 경험도 공유해주세요. 빌드 성공, 축하드립니다.

  7. west 2009.06.03 21:23 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요, 웹킷을 window xp에서 빌드해보고 있습니다.그런데 빌드를 하면 qmake를 찾지 못하고 빌드에러가 나는데요,
    http://trac.webkit.org/wiki/CygwinInstallerPackages
    에는 qmake나 QT 관련 내용은 없는 것같습니다.

    위에 빌드 캡처화면을 보면 VC가 돌아가는 것같은데요.
    혹시 qmake가 아니라 VC로 컴파일 되도록 window 빌드를 위해 따로 설정해줘야 하는 것이 있을런지요 ?

    • 박동진 2009.11.11 08:31 신고  댓글주소  수정/삭제

      저도 같은 문제를 겪었는데, 포멧을 했습니다.(별짓을 다했는데, 안되더군요..ㅡㅜ;;) 해결방안이 있다면, 공유부탁 드려요..(참고로 저는 vista 32bit에서 xp로 전환했습니다.)

    • ingee 2009.11.25 09:21 신고  댓글주소  수정/삭제

      qmake를 찾는건 Qt 버전으로 빌드하려고 그러는 겁니다. win32 버전으로 빌드하려 한다면 의도와 맞지 않는 겁니다.
      같은 문제를 겪게되어 "build-webkit" 스크립트를 분석해 보았습니다. "build-webkit" 스크립트를 실행할 때 명시적으로 "--qt" 옵션을 주거나 cygwin 콘솔의 환경변수로 QTDIR이 설정되어 있으면 Qt 버전으로 빌드하려고 시도하더군요.
      환경변수로 QTDIR이 지정되어 있는지 확인하시고 해당 변수를 제거(unset)해보시기 바랍니다.

    • west 2010.01.27 15:31 신고  댓글주소  수정/삭제

      저는 그냥 Visual c++ 2005에서 빌드 all 했습니다(작년 8월버전).
      WebKitTools\Scripts 폴더에 있는 아래 두가지 스크립트를 실행하고 빌드했습니다.
      update-webkit-support-libs
      update-webkit-auxiliary-libs
      참고하시구요.
      근데.. 최근 소스는 자꾸 빌드 완료후 win launcher 실행할려고 하면 실행 실패 나면서 구동실패해서 못하고 있습니다. ;;;

    • ingee 2010.01.28 01:30 신고  댓글주소  수정/삭제

      to west/
      WinLauncher.exe 가 있는 디렉토리에 사파리 브라우저 디렉토리의 DLL들을 (WebKit.dll 제외) 복사하면 될지도 모릅니다. safari.resource 였던가? 폴더도 복사해야 했던 것 같은데... 가물가물...

      실행 안될 때 뭔가 에러 메시지를 내지 않던가요?

      잘 해결되면 좋겠습니다.

  8. futurejo2 2009.06.13 21:50 신고  댓글주소  수정/삭제  댓글쓰기

    한참 고생중이렀는데, 감사합니다..

  9. 박정신 2009.08.03 16:12 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 Webkit에 관한 업무를 인턴과제로 회사로부터 받았습니다. 개념자체도 생소했었는데, ingee글 덕분에 겨우 webkit을 빌드 할수 있었습니다. 그런데 빌드 하고 나니 자료가 찾기가 너무 힘들다 보니까 어디서 부터 어떻게 개발을 시작해야 할 지도 모르겠네요.. Webkit을 이용해서 간단한 RSS reader를 짜보려고 합니다. Javascript로 개발하는것으로 알고 있는데 Webkit소스의 어느 파일에서 코딩을 시작해야하는지부터 깜깜합니다. 도움부탁드려요 참고할만한 사이트나 정보가 있으신지요?

    • ingee 2009.08.03 16:38 신고  댓글주소  수정/삭제

      재밌는 주제를 받으셨네요. 선임 개발자분과 프로그램의 골격에 대해 상의하세요. 하실 일이 WebKit 내부를 수정해야 하는 일인지, WebKit을 있는 그대로 (컴포넌트인채로) 이용해야 하는 일인지부터 결정하셔야겠습니다.

  10. 박정신 2009.08.03 17:31 신고  댓글주소  수정/삭제  댓글쓰기

    컴포넌트인채로 이용하려 합니다. Webkit nightely source를 다운받았는데 어느 부분을 무슨 language로 건드려야 하는건가요? rss짜는것은 둘째 치고더라고 시작을 못하고 있으니 답답하네요 ..

    • ingee 2009.08.04 07:56 신고  댓글주소  수정/삭제

      함께 일하는 사람이 아니면 도와줄 수 없는 부분이 있습니다. 님에게 일을 맡기신 선배님이 계실겁니다. 저보다는 함께 일하는 (또는 일하게 될) 그분과 긴밀하게 소통하는게 좋을 것 같습니다.
      WebKit을 컴포넌트인채로 이용한다면, WebKit을 수정할게 아니라 WebKit을 불러쓰는 바깥쪽 코드를 작성해야 하는 상황 같습니다. 다시 한번 말씀 드리지만, 과제를 내주신 분이 원하는 것이 무엇인지 분명하게 파악해보세요. "요구사항 분석"을 깔끔히 끝내야 일을 수월하게 진행할 수 있습니다.

  11. 박동진 2009.11.17 17:29 신고  댓글주소  수정/삭제  댓글쓰기

    안녕하세요 ^^
    웹킷 빌드하고 런쳐를 실행시켜 보면 폰트가 ie나 다소 흐려 보이는데요.
    GDI를 사용해서 그런걸까요? 아니면, 폰트 설정문제일까요?

    • ingee 2009.11.19 10:39 신고  댓글주소  수정/삭제

      WebKit의 Windows 포트(port)는 CoreGraphics 라는 애플의 그래픽 시스템 DLL을 사용합니다. GDI를 쓰지 않습니다. 폰트 설정을 바꿔서 좀 더 진하게 보이게 할 수 있는지는 모르겠습니다. 가능할 것 같기는 합니다.