WxWidgets in WinCE

WxWidgests는 여러 플랫폼에서 사용 할 수 있는 GUI이다.  Windows CE에서 빌드 해보기로 하자.
내가 다운로드 받은 버전은 wxWidgets-2.8.10 버전이다.

Atree U200(전자사전)을 사용하고 있기 때문에 먼저 STANDARDSDK_500 ( ARMV4I )기기를 목표로 한다..
Win CE 5.0 애뮬레이트에서 실행하기 위해 STANDARDSDK_500 ( x86 )에서도 실행 해본다.

wxWidgets 다운로드
http://sourceforge.net/projects/wxwindows

http://www.wxwidgets.org/downloads/

WinCE를 위한 wxWidget을  Visual Studio 2005에서 빌드하기 --> 이것이 이번장의 목표이다.

<ARMV4I 정적 라이브러리 빌드>

VS 2005에서 빌드하기 위해 프로젝트 파일의 컴파일러를 cl.exe로 바꾼다.

d:\wxWidgets-2.8.10\build\wince 폴더에서 wx_mono.vcp 파일을 메모장으로 열기

ARM에 관련된 것 컴파일러 수정하기
       clarm.exe 문자열을 cl.exe로 바꾸고  
       clthumb.exe 문자열을 cl.exe로 바꾸고 저장
wx_mono.vcp를 더블 클릭해서 비쥬얼 스튜디오에서 파일을 연다.
         ( Visual Studio 변환마법사가 실행 될것이다.)

프로젝트 --> C/C++ --> 전처리기 --> 전처리기 정의  :
전처리기 정의에 WCE_PLATFORM_STANDARDSDK를 추가한다

빌드 하고 나면 wx_mono.lib 파일이 다음의 폴더에  생긴다.
wxWidgets-2.8.10\build\wince\STANDARDSDK_500 (ARMV4I)\Debug

pdb 파일은 다음의 폴더에 wxwince28d.pdb라는 이름으로 생긴다.
D:\wxWidgets-2.8.10\lib\evc_armv4t_lib

wx_mono.lib 파일을 wx_monod.lib라는 이름으로 수정후 wxwince28d.pdb와 같은 폴더로 복사한다.

<ARMV4I minimal 샘플 파일 빌드>

D:\wxWidgets-2.8.6\samples\minimal 폴더의  minimal.vcp 파일도 메모장으로  clarm.exe, clthumb.exe 문자열을 찾아 cl.exe로 수정후 더블 클릭하면 비쥬얼 스튜디오의 프로젝트 변환 마법사에 의해서 변환다.
프로젝트를 수정한다.

프로젝트 --> C/C++ --> 전처리기 --> 전처리기 정의
전처리기 정의에 WCE_PLATFORM_STANDARDSDK를 추가한다.

프로젝트 --> 링크 --> 입력 --> 추가 종속성
추가 종속성에서 wxwince28d.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxexpatd.lib를 지우고 wm_monod.lib 입력

프로젝트 --> 링크 --> 입력 --> 특정 라이브러리 무시
특정 라이브러리 무시에서 olece400.lib 추가

실행 파일을 기기로 카피후 실행 해본다

<STANDARDSDK_500 ( x86 ) : 에뮬레이터 실행용 정적 라이브러리 빌드>

STANDARDSDK_500 ( x86 )  타겟은 ARMV4I 타겟과 달리 프로젝트 설정이 되어 있지 않다. 프로젝트 설정을 하나하나 모두 채워야 한다.

프로젝트 --> 구성 속성 --> C/C++ --> 일반  설정
 추가 포함 디렉터리
 ..\..\build\wince\missing,..\..\lib\evc_x86_lib\winced,..\..\include,..\..\src\jpeg,..\..\src\png,..\..\src\zlib,..\..\src\expat\lib
정보 형식: 프로그램 데이터베이스(/Zi)
 경고 수준 : 수준 4(/W4)


프로젝트 --> 구성 속성 --> C/C++ -- > 전처리기 정의
ARM;_ARM_;THUMB;_THUMB_;ARMV4T;UNDER_CE=$(CEVER);_WIN32_WCE=$(CEVER);UNICODE;$(CePlatform);_LIB;DEBUG;__WXWINCE__;
__WXDEBUG__;wxNO_EXCEPTIONS;wxNO_RTTI;wxUSE_BASE=1;WCE_PLATFORM_STANDARDSDK

프로젝트 --> 구성속성 --> C/C++ --> 미리 컴파일된 헤더 셋팅

미리 컴파일된 헤더 사용
wx/wxprec.h
evc_winced_x86\wxprec_monolib.pch

미리 컴파일된 헤더 만들기 설정
dummy.cpp

미리 컴파일된 헤더 사용 안함 설정
extended.c

프로젝트 --> 구성 속성 -->  C/C++ --> 출력 파일
$(PlatformName)\$(ConfigurationName)/
$(PlatformName)\$(ConfigurationName)/
..\..\lib\evc_x86_lib\wxwince28d.pdb

빌드 하고 나면 wx_mono.lib 파일이 다음의 폴더에  생긴다.
D:\wxWidgets-2.8.10\build\wince\STANDARDSDK_500 (x86)\Debug

pdb 파일은 다음의 폴더에 wxwince28d.pdb라는 이름으로 생긴다.
D:\wxWidgets-2.8.10\lib\evc_x86_lib

wx_mono.lib 파일을 wx_monod.lib라는 이름으로 수정후 wxwince28d.pdb와 같은 폴더로 복사한다.

<X86 minimal 샘플 파일 빌드>

D:\wxWidgets-2.8.10\samples\minimal 프로젝트를 예제를 빌드 한다.

프로젝트 --> 구성 속성 --> C/C++ --> 일반
추가 포함 디렉터리
.\..\..\build\wince\missing,.\..\..\lib\evc_x86_lib\winced,.\..\..\include,.,.\..\..\samples

디버깅 정보 형식: 프로그램 데이터베이스(/Zi)
경고 수준 : 수준 4(/W4)

프로젝트 --> 구성 속성--> C/C++ --> 미리 컴파일 헤더
$(PlatformName)\$(ConfigurationName)/minimal.pch

프로젝트 --> 구성 속성--> C/C++ --> 출력 파일
$(PlatformName)\$(ConfigurationName)/
$(PlatformName)\$(ConfigurationName)/
evc_winced_x86\minimal.pdb

프로젝트 --> 구성 속성--> 링커 --> 일반
출력 파일: evc_winced_x86\minimal.exe
증분 링크 사용 : 예)(INCREMENTAL)
시작 배너표시 : 예(/NOLOGO)
추가 라이브러리 디렉터리 : .\..\..\lib\evc_x86_lib

프로젝트 --> 구성 속성--> 링커 --> 입력
추가 종속성 : coredll.lib wx_monod.lib commctrl.lib winsock.lib wininet.lib
특정 라이브러리 무시 : olece400.lib

프로젝트 --> 구성 속성 --> 리소스  
전처리기 정의 :
UNDER_CE=$(CEVER),_WIN32_WCE=$(CEVER),UNICODE,_UNICODE,$(CePlatform),X86,_X86_,
DEBUG,__WXWINCE__,__WXDEBUG__,wxNO_EXCEPTIONS,wxNO_RTTI,NOPCH
Culture : 영어 (미국) (0x409)
추가 포함 디렉터리
.\..\..\build\wince\missing;.\..\..\lib\evc_x86_lib\winced;.\..\..\include;.;.\..\..\samples

프로젝트 --> 링커 --> 시스템
하위 시스템 : WindowsCE (/SUBSYSTEM:WINDOWSCE)
스택 예약 크기 : 65536
스택 커밋 크기 : 4096

프로젝트 --> 링커 --> 고급
진입점 :  WinMainCRTStartup
기준 주소 : 0x00010000

CE 에뮬레이터에서 minimal 예제를 실행한 화면이다.

wxWidgets-2.8.1 버전의 프로젝트 파일(*.vcproj)만 별도 저장한다.
정적라이브러리 프로젝트: wx_mono.vcproj
minimal 라이브러리 : minimal.vcproj

<참고, 펌>
 wxWidget Visual Studio 2005에서 빌드하기 :  http://wxwidgets.info/wxwince_and_vc2005_video/