wxWidgets 사용하는 개발환경 구축하기(2/3)-wxWidgets 설치

Posted by 빵빵빵
2013/05/23 16:58 전산(컴퓨터)/wxWidgets



두번째로 설치해야 할 것이 wxWidgets 라이브러리 입니다.


이 친구는 소스 형태로 배포되기 때문에 다운 받아서 컴파일을 해줘야 dll이 생성됩니다.(리눅스의 경우에는 .so나 .a 파일이 생성되겠지 추측해봅니다.) 컴파일은 앞서 설치한 민지에 포함되어 있는 컴파일러를 사용할 겁니다.

참고 : MFC는 MS에서 컴파일되서 dll 형태로 배포가 되지만, wxWidgets는 소스형태로 배포되기 때문에 이걸 개발자가 컴파일 해서 사용해야 합니다.


저는 공유 dll과 unicode 모듈의 debug/release 로 컴파일을 해보도록 하겠습니다.

여기서 생성된 dll은 문자 처리를 유니코드로 처리하고 디버그 모듈과 릴리즈 모듈을 만들어 내게 됩니다.

디버그 모듈은 디버그시 참조되는 상세한 데이터를 보여주므로 속도가 좀 느리고, 용량이 좀 크고요, 내가 짠 프로그램의 오동작이나 버그를 찾아내어 패치할 수 있게 해줍니다.

MFC의 MFC42UD.DLL 같은 부류의 파일들과 같은 거라 보시면 됩니다.


릴리즈 모듈은 위에 말한 상세 정보를 보여주지 않고 그냥 기능에 충실한 모듈입니다. 실제 사용자에게 배포될 모듈로 조금더 빠른 처리 속도와 저용량으로 최적화 된 모듈입니다. 개발한 프로그램을 배포시에 딸려보낼 파일이라고 생각하시면 됩니다.

MFC의 MFC42U.DLL 같은 부류의 파일들과 같은 거라 보시면 됩니다.


다운로드 URL : http://www.wxwidgets.org/downloads/ 에서

Current Stable Release: wxWidgets 2.8.12 Downloads (SourceForge | UK Mirror)

  • Source Archives
    • wxAll - all wxWidgets ports (other formats: bz2, zip)

를 다운로드 받도록 하겠습니다.

요 라인 아래로 wxMSW니 wxGTK니 wxMAC, wxX11, 기타 등등이 있지만 한방에 다 받기로 했습니다.

제가 다운 받으니 wxWidgets-2.8.12.tar.gz 이 받아집니다. 스터블(stable;안정) 버전의 마지막 버전입니다.
2013년 5월 23일 현재...


다운 받았으니 압축을 풀어야죠? 저는 회사에서도 무료로 쓸수 있는 반디집을 사용하여 풀었습니다. (감사한 마음에 링크를 걸어드립니다.)


알아서 풀어주세요... ㅋ 쉽잖아요. 이렁건...

풀린 wxWidgets-2.8.12 디렉토리를 C:\wxWidgets-2.8.12 로 옮겼습니다.



자.. 이제 명령 프롬프트를 다시 띄워보세요... (윈도우키 + R -> cmd 엔터)

여기서부터는 커맨드 명령을 사용합니다.

그리고 C:\wxWidgets-2.8.12\build\msw 로 디렉토리를 옮깁니다. " cd C:\wxWidgets-2.8.12\build\msw" 라고 치세요.

msw가 마이크로 소프트 윈도우 의 약자 같군요.... 그럴거 같습니다.

요기서 부터 민지를 씁니다.

bash 라고 치고 엔터를 쳐보세요. 그리고 pwd라고 쳐보세요.

사용자 삽입 이미지

bash를 실행하는 순간 리눅스 스타일의 쉘이 되 버렸죠?

리눅스에서 현재 디렉토리 위치를 보는 명령어 pwd를 치니까 C:\wxWidgets-2.8.12\build\msw 가  /c/wxWidgets-2.8.12/build/msw 로 약간 바뀌었네요.


자 이제 wxWidgets 을 컴파일 해 봅시다.

디버그로 컴파일 하기

mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=debug clean
mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=debug

위에 적은 두줄중
첫번째 줄이 소스코드를 클린 시키는 거라는데.... 소스파일을 컴파일 하기전에 정리한다고 보시면 됩니다.
시간은 몇십초 정도 걸립니다.
두번째 줄이 실제로 컴파을 시행하여 dll파일을 만듭니다. 시간이 꽤 걸립니다. 라면하나 끓이시기 바랍니다.


릴리즈로 컴파일 하기

mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release clean
mingw32-make -f makefile.gcc SHARED=1 UNICODE=1 BUILD=release

위에 적은 두줄중
첫번째 줄이 소스코드를 클린 시키는 거라는데.... 소스파일을 컴파일 하기전에 정리한다고 보시면 됩니다.

시간은 몇십초 정도 걸립니다.

두번째 줄
이 실제로 컴파을 시행하여 dll파일을 만듭니다. 이것도 꽤 시간이 걸림니다. 아까 끓인 라면을 드시면 됩니다.


이 시점에 눈치를 채신 분도 있겠지만

SHARED=0 으로 하면 static 라이브러리로 생성됩니다.(내가 짠 프로그램에 같이 링크가 되는 형태로 생성=>dll이 만들어지지 않습니다.)

UNICODE=0 으로 하면 유니코드를 사용하지 않는 멀티바이트 라이브러리로 생성됩니다.

우리는 한글(2바이트짜리)을 사용하기 때문에 유니코드를 반드시 사용해야 한다는 글을 인터넷 어디선가에서 봤는데...

아직 저도 배우는 단계이므로 일단은 유니코드로 작업을 진행하고 나중에 멀티바이트로 컴파일해서 테스트 해보도록 하겠습니다.)



컴파일 정리~~~ 스크립트로 만들었습니다.

디버그 유니코드 모듈 클린/컴파일
디버그 멀티바이트 모듈 클린/컴파일
릴리즈 유니코드 모듈 클린/컴파일
릴리즈 멀티바이트 모듈 클린/컴파일


read -p "메시지" 로 각 클린/컴파일시에 정상적으로 끝났는지 확인 할 수 있게 대기합니다.

정상 처리된 경우 엔터키를 쳐서 다음 클린/컴파일을 하면 됩니다.

================================================================================
mingw32-make -f makefile.gcc BUILD=debug UNICODE=1 SHARED=1 clean
ls -la /c/wxWidgets-2.8.12/lib/gcc_dll/
read -p "unicode debug cleaned"
mingw32-make -f makefile.gcc BUILD=debug UNICODE=1 SHARED=1
ls -la /c/wxWidgets-2.8.12/lib/gcc_dll/
read -p "unicode debug compiled"

mingw32-make -f makefile.gcc BUILD=debug UNICODE=0 SHARED=1 clean
ls -la /c/wxWidgets-2.8.12/lib/gcc_dll/
read -p "ansi debug cleaned"
mingw32-make -f makefile.gcc BUILD=debug UNICODE=0 SHARED=1
ls -la /c/wxWidgets-2.8.12/lib/gcc_dll/
read -p "ansi debug compiled"

mingw32-make -f makefile.gcc BUILD=release UNICODE=1 SHARED=1 clean
ls -la /c/wxWidgets-2.8.12/lib/gcc_dll/
read -p "unicode release cleaned"
mingw32-make -f makefile.gcc BUILD=release UNICODE=1 SHARED=1
ls -la /c/wxWidgets-2.8.12/lib/gcc_dll/
read -p "unicode release compiled"

mingw32-make -f makefile.gcc BUILD=release UNICODE=0 SHARED=1 clean
ls -la /c/wxWidgets-2.8.12/lib/gcc_dll/
read -p "ansi release cleaned"
mingw32-make -f makefile.gcc BUILD=release UNICODE=0 SHARED=1
ls -la /c/wxWidgets-2.8.12/lib/gcc_dll/
read -p "ansi release compiled"

================================================================================


빌드된 dll 모듈이 어디로 떨궈져 나올까요?

바로 C:\wxWidgets-2.8.12\lib\gcc_dll 디렉토리로 떨궈집니다.

위에 4가지 타입으로 컴파일을 하면 파일 목록이 이렇게 나오는 군요.

================================================================================
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 1216-9BEC

 C:\wxWidgets-2.8.12\lib\gcc_dll 디렉터리

2013-05-24  오후 01:13    <DIR>          .
2013-05-24  오후 01:13    <DIR>          ..
2013-05-23  오후 04:44             2,219 du.txt
2013-05-23  오후 05:06             2,269 du2.txt
2013-05-24  오후 01:13                 0 du3.txt
2013-05-24  오후 12:57         4,736,852 libwxbase28.a
2013-05-24  오전 11:52         4,746,662 libwxbase28d.a
2013-05-24  오전 11:52           325,926 libwxbase28d_net.a
2013-05-24  오후 12:03            66,214 libwxbase28d_xml.a
2013-05-24  오후 12:24         4,748,400 libwxbase28u.a
2013-05-24  오전 10:05         4,769,874 libwxbase28ud.a
2013-05-24  오전 10:05           326,700 libwxbase28ud_net.a
2013-05-24  오전 10:16            64,850 libwxbase28ud_xml.a
2013-05-24  오후 12:24           325,926 libwxbase28u_net.a
2013-05-24  오후 12:36            64,678 libwxbase28u_xml.a
2013-05-24  오후 12:57           325,828 libwxbase28_net.a
2013-05-24  오후 01:09            66,198 libwxbase28_xml.a
2013-05-24  오후 12:53           219,470 libwxexpat.a
2013-05-24  오전 11:48           337,370 libwxexpatd.a
2013-05-24  오후 12:53           167,376 libwxjpeg.a
2013-05-24  오전 11:48           775,450 libwxjpegd.a
2013-05-24  오후 12:02         1,909,310 libwxmsw28d_adv.a
2013-05-24  오후 12:04           829,886 libwxmsw28d_aui.a
2013-05-24  오후 12:01         9,260,432 libwxmsw28d_core.a
2013-05-24  오후 12:03           792,834 libwxmsw28d_html.a
2013-05-24  오후 12:02           209,774 libwxmsw28d_media.a
2013-05-24  오후 12:04         1,732,980 libwxmsw28d_richtext.a
2013-05-24  오후 12:03           497,452 libwxmsw28d_xrc.a
2013-05-24  오전 10:15         1,909,848 libwxmsw28ud_adv.a
2013-05-24  오전 10:17           830,058 libwxmsw28ud_aui.a
2013-05-24  오전 10:14         9,259,524 libwxmsw28ud_core.a
2013-05-24  오전 10:16           791,478 libwxmsw28ud_html.a
2013-05-24  오전 10:15           209,824 libwxmsw28ud_media.a
2013-05-24  오전 10:17         1,738,714 libwxmsw28ud_richtext.a
2013-05-24  오전 10:17           497,704 libwxmsw28ud_xrc.a
2013-05-24  오후 12:36         1,909,310 libwxmsw28u_adv.a
2013-05-24  오후 12:37           829,886 libwxmsw28u_aui.a
2013-05-24  오후 12:35         9,230,398 libwxmsw28u_core.a
2013-05-24  오후 12:36           789,622 libwxmsw28u_html.a
2013-05-24  오후 12:36           209,002 libwxmsw28u_media.a
2013-05-24  오후 12:38         1,734,772 libwxmsw28u_richtext.a
2013-05-24  오후 12:37           497,452 libwxmsw28u_xrc.a
2013-05-24  오후 01:08         1,904,894 libwxmsw28_adv.a
2013-05-24  오후 01:10           827,900 libwxmsw28_aui.a
2013-05-24  오후 01:08         9,250,876 libwxmsw28_core.a
2013-05-24  오후 01:09           792,642 libwxmsw28_html.a
2013-05-24  오후 01:09           208,512 libwxmsw28_media.a
2013-05-24  오후 01:11         1,732,652 libwxmsw28_richtext.a
2013-05-24  오후 01:10           496,400 libwxmsw28_xrc.a
2013-05-24  오후 12:53           188,188 libwxpng.a
2013-05-24  오전 11:48           495,962 libwxpngd.a
2013-05-24  오후 12:52            82,002 libwxregex.a
2013-05-24  오전 11:48           163,630 libwxregexd.a
2013-05-24  오후 12:20           104,106 libwxregexu.a
2013-05-24  오전 10:01           187,658 libwxregexud.a
2013-05-24  오후 12:53           355,798 libwxtiff.a
2013-05-24  오전 11:48           738,528 libwxtiffd.a
2013-05-24  오후 12:52            80,348 libwxzlib.a
2013-05-24  오전 11:48           162,218 libwxzlibd.a
2013-05-24  오후 01:11    <DIR>          msw
2013-05-23  오후 05:40    <DIR>          mswd
2013-05-24  오후 12:38    <DIR>          mswu
2013-05-23  오후 03:40    <DIR>          mswud
2013-05-24  오전 11:52        35,553,882 wxbase28d_gcc_custom.dll
2013-05-24  오전 11:52         1,379,155 wxbase28d_net_gcc_custom.dll
2013-05-24  오후 12:03           467,969 wxbase28d_xml_gcc_custom.dll
2013-05-24  오전 10:05        35,980,580 wxbase28ud_gcc_custom.dll
2013-05-24  오전 10:05         1,424,030 wxbase28ud_net_gcc_custom.dll
2013-05-24  오전 10:16           468,081 wxbase28ud_xml_gcc_custom.dll
2013-05-24  오후 12:24         4,680,540 wxbase28u_gcc_custom.dll
2013-05-24  오후 12:24           324,460 wxbase28u_net_gcc_custom.dll
2013-05-24  오후 12:36           256,064 wxbase28u_xml_gcc_custom.dll
2013-05-24  오후 12:57         4,639,199 wxbase28_gcc_custom.dll
2013-05-24  오후 12:57           318,647 wxbase28_net_gcc_custom.dll
2013-05-24  오후 01:09           255,598 wxbase28_xml_gcc_custom.dll
2013-05-24  오후 12:02         6,468,660 wxmsw28d_adv_gcc_custom.dll
2013-05-24  오후 12:04         2,626,441 wxmsw28d_aui_gcc_custom.dll
2013-05-24  오후 12:02        96,990,043 wxmsw28d_core_gcc_custom.dll
2013-05-24  오후 12:03         6,134,124 wxmsw28d_html_gcc_custom.dll
2013-05-24  오후 12:02         1,151,180 wxmsw28d_media_gcc_custom.dll
2013-05-24  오후 12:04         5,532,284 wxmsw28d_richtext_gcc_custom.dll
2013-05-24  오후 12:03         8,955,815 wxmsw28d_xrc_gcc_custom.dll
2013-05-24  오전 10:15         6,575,785 wxmsw28ud_adv_gcc_custom.dll
2013-05-24  오전 10:17         2,651,710 wxmsw28ud_aui_gcc_custom.dll
2013-05-24  오전 10:15        97,650,052 wxmsw28ud_core_gcc_custom.dll
2013-05-24  오전 10:16         6,037,496 wxmsw28ud_html_gcc_custom.dll
2013-05-24  오전 10:15         1,173,596 wxmsw28ud_media_gcc_custom.dll
2013-05-24  오전 10:17         5,585,629 wxmsw28ud_richtext_gcc_custom.dll
2013-05-24  오전 10:17         9,177,817 wxmsw28ud_xrc_gcc_custom.dll
2013-05-24  오후 12:36         1,551,104 wxmsw28u_adv_gcc_custom.dll
2013-05-24  오후 12:37           744,362 wxmsw28u_aui_gcc_custom.dll
2013-05-24  오후 12:35        10,861,682 wxmsw28u_core_gcc_custom.dll
2013-05-24  오후 12:36         1,083,885 wxmsw28u_html_gcc_custom.dll
2013-05-24  오후 12:36           318,981 wxmsw28u_media_gcc_custom.dll
2013-05-24  오후 12:38         1,710,731 wxmsw28u_richtext_gcc_custom.dll
2013-05-24  오후 12:37           829,124 wxmsw28u_xrc_gcc_custom.dll
2013-05-24  오후 01:08         1,546,597 wxmsw28_adv_gcc_custom.dll
2013-05-24  오후 01:10           742,645 wxmsw28_aui_gcc_custom.dll
2013-05-24  오후 01:08        10,849,870 wxmsw28_core_gcc_custom.dll
2013-05-24  오후 01:09         1,082,693 wxmsw28_html_gcc_custom.dll
2013-05-24  오후 01:09           317,263 wxmsw28_media_gcc_custom.dll
2013-05-24  오후 01:11         1,692,723 wxmsw28_richtext_gcc_custom.dll
2013-05-24  오후 01:10           814,630 wxmsw28_xrc_gcc_custom.dll
              97개 파일         462,119,963 바이트
               6개 디렉터리  22,181,928,960 바이트 남음

================================================================================

파일 이름의 규칙을 통밥으로 때려 맞춰 보니...

wxmsw28_로 시작하는 것은 ansi, release 모듈
wxmsw28d_로 시작하는 것은 ansi, debug 모듈
wxmsw28u_로 시작하는 것은 unicode, release 모듈
wxmsw28ud_로 시작하는 것은 unicode, debug 모듈

인 것으로 보입니다..... ^^


원문 컴파일 참고 사이트입니다.
Compiling wxWidgets with MinGW

2013/05/23 16:58 2013/05/23 16:58

이 글에는 트랙백을 보낼 수 없습니다