이번에는 Visual Sutdio 에서 wxWidget을 만드는 법을 설명하겠습니다.  wxWidget 설치시 Visual Sutdio용 샘플이 포함되어 있기 때문에 Codeblock에서 했던 거 보다 더 싶습니다.

wxWidgets 설치경로\samples 에 보면 다양한 샘플들이 있습니다. 이 샘플을 이용하겠습니다. 이 샘플들안을 보면 이미 Visual Stduio 용 프로그램이들어 있습니다. 자신의 Visual Sutdio 버전에 맞게 변환시킨 후 약간의 경로만 잡으면 쉽게 설정할 수 있습니다.

 개인적으로 grid 를 좋아하기 때문에 이 프로그램을 선택했습니다. 이 폴더 전체를 자신이 원하는 위치에 복사합니다. 복사 후 그 복사한 폴더안 의 grid.dsp 파일을 Visual Stduio 로 열고 변환하겠냐고 물으면 변환한다고 선택 합니다.

1. 솔루션 탐색기에ㅅ서  griddemo.rc  파일을 삭제합니다.
(이게 무슨 용도인지 모르겠습니다. expression 버전에서는 리소스 편집 기능을 제공하지 않는다고 뜨기는 한데, 이것으로 Visual Studio 에서 뭔가 할 수 있을 것 같지는 않습니다. )



2. Unicode Debug 와 Unicode Release 에 대한 설정
 우선 Unicode Debug 와 Unicode Release 에 대한 설정부터 하겠습니다.
이제 Visual Sutdio에 wxWidget을 각종 라이브러리와 Header 파일을 잡아 주도록 합니다.

1) 추가 포함 디렉터리 설정
메뉴의 프로젝트 -> 속성 창을 눌르면 아래와 같은 대화창이 뜹니다.
사용자 삽입 이미지

"구성 속성" -> "C/C+" -> 일반을 선택하면 , 추가 포함 디렉터리에

unicode debug 에서는
wxWidget 설치경로\include ( C:\tools\wxWidgets-2.8.11\include )
wxWidget 설치경로\lib\vc_lib\mswu ( C:\tools\wxWidgets-2.8.11\lib\vc_lib\mswud)

unicode release 에서는
wxWidget 설치경로\include ( C:\tools\wxWidgets-2.8.11\include )
wxWidget 설치경로\lib\vc_lib\mswu (  C:\tools\wxWidgets-2.8.11\lib\vc_lib\mswu )

사용자 삽입 이미지


2) 링크 경로 설정
 이제 링크 경로를 설정합니다.
구성 속성 -> 링커 -> 일반을 누르면 아래와 같은 화면이 보이고 그 중 추가 라이브러리 디렉터리를 수정합니다.
사용자 삽입 이미지


wxWidget 설치경로\lib\vc_lib  ( C:\tools\wxWidgets-2.8.11\lib\vc_lib )
로 설정합니다.


이 후 컴파일 후, 실행하면 아래와 같은 화면이 나옵니다.


  솔류션 구성을 지난 번에 Visual Sutdio에서 wxWidget 자체를 컴파일 했을 때, 설정했던 것으로 잡아야 컴파일 가능합니다.


사용자 삽입 이미지


3. DLL Unicode Debug 와 DLL Unicode Release 에 대한 설정
 DLL 에 대한 설정 과정도 크게 다르지 않습니다.

1) 추가 포함 디렉터리 설정
메뉴의 프로젝트 -> 속성 창을 눌러서 속성 페이지를 띄운 후,

"구성 속성" -> "C/C+" -> 일반을 선택하면 , 추가 포함 디렉터리에

dll unicode debug 에서는
wxWidget 설치경로\include ( C:\tools\wxWidgets-2.8.11\include )
wxWidget 설치경로\\lib\vc_dll\mswud ( C:\tools\wxWidgets-2.8.11\lib\vc_dll\mswud)

unicode release 에서는
wxWidget 설치경로\include ( C:\tools\wxWidgets-2.8.11\include )
wxWidget 설치경로\lib\vc_lib\mswu (  C:\tools\wxWidgets-2.8.11\lib\vc_dll\mswu )

를 추가 합니다.

2) 링크 경로 설정
구성 속성 -> 링커 -> 일반을 누르면 아래와 같은 화면이 보이고 그 중 추가 라이브러리 디렉터리를 수정합니다.

wxWidget 설치경로\lib\vc_dll  ( C:\tools\wxWidgets-2.8.11\lib\vc_dll )


 이렇게 하면 빌드 환경이 구성되었습니다. 혹시 빌드는 되는데 dll 이 없다고 하면서 실행이 안되는 경우,
04. Visual Studio 에서 WxWidget 컴파일 에서 설명했된 path 설정하는 방법에 따라
wxWidget 설치경로\lib\vc_dll (C:\tools\TortoiseSVN\bin;C:\tools\wxWidgets-2.8.11\lib\vc_dll )
를 path에 추가 하시기 바랍니다.



3. 환경변수 WXWIN 을 이용해서 경로 설정하기
04. Visual Studio 에서 WxWidget 컴파일 에서 설명한 WXWIN  이라는 환경변수를 추가 했을 경우,
  1, 2 에서 "wxWidget 설치경로" 라고 했던 부분을 $(WXWIN) 라 고쳐 적을 수 있습니다.

예를 들어
wxWidget 설치경로\include ( C:\tools\wxWidgets-2.8.11\include )
라고 해야 하는 부분을
$(WXWIN)\include   
로 설정할 수 있습니다.

 컴퓨터 환경이 변경되거나 다른 사람 컴퓨터에서는 wxWidgets 설치 경로가 다르거나,  wxWidget 버전이 변경되거나 해서 wxWidget 설치경로가 변경되었을 시,
이미 만든 프로젝트에 대해서 다시 컴파일시 경로가 wxWidget 경로가 달라서 컴파일 되지 않게 됩니다.
따라서 위에서 했던 것 처럼 다시 wxWidget 경로를 다 다시 잡아 주어야 합니다.
이를 방지하기 위해서 환경변수를 사용하게 되면 이 환경변수 경로만 잘 맞추어 주면 컴파일 하기 쉽게 할 수
있습니다.



작성이 : 승용.한밀
최종수정일 : 2010.08.08
2010.08.08 : 환경변수를 추가 해서 세팅하는 방법 추가
이 글은 계속 수정되고 있습니다. 최종 수정일에 주의해 주세요...




CodeBlock에서 xwWidget 샘플 코드를 컴파일 해봅시다.
wxWidget 설치폴더\samples 를 보면 많은 샘플코드를 찾을 수 있습니다. 이중 아무거나 하나를 잡아서 컴파일 해 봅시다. 제 개인적으로 grid 샘플을 좋아해서 이것을 컴파일해 보도록 하겠습니다.
Codeblcok 을 실행한 후, File->New->Porject... 를 선택한 화면에서 wxWidgetProject 를 선택 합니다.
사용자 삽입 이미지




첫 화면은 그냥 Next Click 하고 wxWidget Version을 설정하는 화면에서 자신이 설치한   xwWidget 버전을 설정합니다.

사용자 삽입 이미지


적당한 프로젝트 이름과 위치를 지정해 줍니다.




이 다음에서도 적당히  Author 관련 항목을 작성합니다.



처음 항목은 어떤 GUI 를 어떤 툴로 만들 것인지 설정할 것인가 묻는 것이고 두 번째는 Dialog 와 Frame 중에 선택하라고 하고 있습니다.
사용자 삽입 이미지
우선 GUI 툴에 있는 xwSmith 는 CodeBlock 의 PlugIn 중 하나로 Codeblock 만 사용할 경우 꽤 쓸만한 툴입니다. 그리고 xwFormBuilder 의 경우 xwWidget 에 잘 알려진 GUI 작성 툴입니다.

제 경우 처음에는 wxSmith 를 사용했었는데, 웬지 기능이 적어 보이고 Visual Studio 를 중심으로 프로그램을 만들다 보니 wxFormBuilder를 사용하고 있습니다.

Application Type 의 경우 간단한 프로그램의 경우, Dialog 가 이용되고 좀 규모가 있는 경우 Frame을 이용한다는 정도로 이해 하는 것이 간단할 것 같습니다. 사실 저도 두개가 무슨 차이가 있는지 정확히는 모릅니다. 죄송합니다. 그냥 위에 보이는 프로젝트 설정하고 있는 창이 Dialog 인 것은 확실한데, Frame 이 정확히 어떤 의미인지는 모르겠습니다.  (대충은 알겠는데...)

 이 설정들은 Default 로 만들어 주는 코드들에 영향을 주는 것인데, 이 경우에는 그냥 Sample 소스를 만들려는 것이라서 이렇게 선택 해봤습니다.


이제 Next 를 누르면 wxWidget 을 설치한 폴더를 알려달라는 화면이 나오는데, 각자 설치한 폴더를 선택하면 됩니다.





이 이후 화면은 Compile와 폴더(디렉토리) 구조를 어떻게 할 것인지 선택하는 화면입니다.

가장 중요한 부분은 Compiler 를 설정하는 Combo box 인데,  MinGW 가 GNU GCC Compiler 이므로 이를 선택하면 됩니다.



WxWidget 을 컴파일 할 때, MONOLITHIC=1 SHARED=1 UNICODE=1  옵션을 주었기 때문에 이 에 따라서
wxWdigets Library Settings 을 설정합니다.




마지막 화면에서 겁을 주니 그대로 Finish 를 누르도록 합시다.


  이제 프로젝트의 생성은 끝났습니다.

   Builld 메뉴의 Build 를 눌러서 컴파일 하도록 합시다.
  컴파일 후, Build->Run 을 눌러서 프로그램을 실행해 봅시다. 아래와 같은 화면이 뜨면 성공입니다.



 다음에는 FormBuild 를 통해 이 안의 내용을 꾸며 보도록 하겠습니다.


 작성이 : 승용.한밀
최종수정일 : 2009.12.27
이 글은 계속 수정되고 있습니다. 최종 수정일에 주의해 주세요...


MinGW 보다 더 쉽습니다.
\build\msw 에 있는 wx.dsw 와 wx_dll.dsw 파일을 Visaul Studio 2005 나 2008 버전으로 열어둡니다. 변환할 것이냐고 물어보면 "예"를 선택합니다. 그리고 원하는 컴파일 빌드 옵셥을 설정한 후 컴파일 하면 됩니다.
전 static 환경을 위해 Unicode Release 와 Unicode Debug , DLL 을 사용하는 환경을 위해 DLL Unicode Release 와 DLL Unicode Debug를 컴파일 옵션을 설정해서 각각 컴파일 해두었습니다.
DLL 을 사용하지 않는 static 빌드에서 런타임 라이브러리가 다중 스레드 DLL(/MD) 나 다중 스레드 디버그 DLL(/MDd) 로 되어 있는 부분을 수정해주어야 합니다. (이 문제를 찾는데 몇 개월이 걸렸군요...). 솔류션에 보이는 모든 프로젝트를 선택한 후(shift 버튼을 이용해서) 오른쪽 클릭 -> 속성을 누르면 속성 페이지 창이 뜹니다. 구성속성 -> C/C++ -> 코드 생성을 선택화면 런타임 라이브러리를 선택할 수 있는 창이 있습니다. 이 속성을  target 종류에 맞게 다중 스레드(/MT) 나 다중 스레드 디버그(/MTd) 로 변경해 주세요..


간혹 컴파일 순서가 정해지지 않아서 컴파일 오류 나는 경우가 있는데, 이 경우 무식하게 다시 빌드를 눌러 컴파일이 안 날때 까지 하는 방법을 사용했습니다. 이게 잘 안된다면 솔류션 탐색기에서 프로젝트를 선택해 하나하나 프로젝트만 빌드를 선택하는 것도 하나의 방법입니다. 이렇게 한다고 해도 DLL Unicode Release 와 DLL Unicode Debug 을 컴파일 할 때, dbgrid 가 컴파일 오류 나는 현상이 있습니다. 이 때에는 해당 프로젝트 속성를 누른 후 구성 속성 -> 링커에 있는 추가 종속성 중 ..\..\lib\vc_dll\wxbase28ud_odbc.lib 항목을 지워버려서 컴파일 되게 했습니다. 물론 이 방식이 문제는 있을 것이라고 생각됩니다. 전 dbgrid 쪽이 필요하지 않기에 이 방법을 사용해서 컴파일 하는 방식을 사용했습니다.
(odbc32.lib 관련 에러가 날 때, Visual Studio 에 Data Access components 설치가 필요하다고 합니다.
http://wiki.wxwidgets.org/Compiling_WxWidgets_with_MSVC_%282%29 )

추가로 환경변수를 설정해서 사용하는게 좋을 것 같습니다. 나중에 wxWidget 의 새로운 버전을 설치하면서 설치한 경로가 달라지면 이미 만들어진 프로젝트 파일에 대해서 다시 설정해 주어야 하기 때문에 번거로울 수가 있습니다. 이 때문에 환경변수 설정하는게 편합니다.

내 컴퓨터 ->속성을 누르면 아래와 같은 시스템 등록 정보 창이 뜹니다.
위 붉은색 네모 상자 대로 고급 탭의 환경 변수 버튼을 누르면

환경 변수를 추가 할 수 있는 창이 뜹니다. 위에는 Window XP 로 로그인 하는 사용자에 대해서만 적용되는 사용자 변수를 추가, 편집, 삭제 할 수 있고 아래 부분의 시스템 변수 부분은 전체 사용자에 대해 적용되는 환경 변수를 조절을 하게 됩니다.
 사용하는 경우에 맞게 환경 변수를 새로 만들기 하면 됩니다.




 새로 만들기 버튼을 누르면 아래와 같은 화면이 뜹니다. 아래 내용대로
WXWIN 이라는 변수에 WxWidget 을 설치한 경로를 설정하면 됩니다.


 추가로 DLL 로 프로젝트를 구성할 때, 편리하기 위해서
 DLL 이 있는 곳의 경로를 기존 path 에 추가 하는게 좋습니다.


환경 변수를 설정하는 창에서
 path 를 선택하여 편집 버튼을 누르면




path 를 설정할 수 있는 창이 뜹니다. path 또한 환경 변수 중에 하나인데 좀 특별한 역할을 합니다.
path 에 대해서는 검색을 통해 알아 보세요...


기존에  path 에 대해 설정한 값을 없애면 안되므로 주의가 필요 합니다.
기존 path 에 대한 변수 값의 맨 끝에 semicolon(;) 으로 시작하는 wxWidget 에서 lib 폴더 밑의 vc_dll 이 있는 곳을 설정합니다. 저의 경우 아래와 같이 맨 끝에 추가 했습니다.
;C:\tools\TortoiseSVN\bin;C:\tools\wxWidgets-2.8.11\lib\vc_dll



이로써 Visual Studio 에서 WxWidget을 사용할 수 있는 환경을 준비하는 것이 끝났습니다. 이제 샘플을 만들기만 하면 될 것 같습니다.




작성이 : 승용.한밀
최종수정일 : 2010.12.21
2010.08.08 : 환경변수를 추가 해서 세팅하는 방법 추가
2010.12.21 :  다중 스레드(/MT) 나 다중 스레드 디버그(/MTd)  해야 하는부분 추가
이 글은 계속 수정되고 있습니다. 최종 수정일에 주의해 주세요...