wxWidgets 사용하여 크로스 플랫폼 GUI 어플리케이션을 만들어 보자.

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



wxWidgets 라이브러리를 사용하여 크로스 플랫폼 GUI 어플리케이션을 만들어 보자~ 를 제목으로 글을 올려보도록 하겠습니다.


제일 중요한 세가지 프로그램.

wxWidgets ??? MinGW??? Codeblock???


일단 앞에서 언급했듯이 세가지 프로그램이 뭔가~~ 정의? 소개? 부터 좀 알아보도록 하겠습니다.

윈도우즈 환경 기준으로, C/C++은 알고 있다는 전제하에 설명합니다.

그리고 VS(비주얼스튜디오)랑 비교하여 설명도 자주 하기 때문에 VS를 사용해보신 적이 있으신 분들은 쉽게 이해가 가실겁니다.


1. wxWidgets은 MFC(마이크로소프트 파운데이션 클래스??이던가??) 같은 라이브러리의 모듬입니다.

저는 이녀석을 더블유위젯, 혹은 위젯, 위젯라이브러리 라고 읽습니다. (우리는 끝에 붙는 복수를 의미하는 s는 무시하는 민족이잖아요... ㅋ)


좀더 자세하게 말하자면 Windows, OS X, Linux, UNIX(32비트/64비트)랑 윈도우 모바일, 아이폰, 임베디드 GTK+에서 사용할 수 있는 C++ 라이브러리라고 할 수 있습니다.(이 줄은 직역했음)

라이브러리 형태로 만들어져 있으므로 파이선이나 펄, 루비등등 여러가지 언어에서도 사용이 가능합니다.

(윈도우즈 환경이라면 dll로 구성되어 있으니까 dll을 사용하게 프로그램 할 수 있는 언어라면 다 사용이 가능하겠죠.)

이 녀석은 소스로 제공되기 때문에 컴파일이 필요합니다. (컴파일 방법은 뒤에..)


왼만한 클래스들은 만들어져서 다음과 같이 제공되고 있습니다.
http://docs.wxwidgets.org/stable/wx_classesbycat.html#classesbycat


예를 들자면 wxDialog 클래스를 이용해서 다이얼로그를 만들고, wxButton 클래스를 이용해서 버튼을 만들고 하는거지요.

이 클래스들을 사용해서 프로그램을 작성하면 윈도우, 맥, 유닉스에서 컴파일만 하면 한방에 동일한 프로그램을 실행할 수 있게됩니다. 멋지죠? ^^

물론 이 클래스들을 사용하는 방법은 공부를 해야 합니다. ㅎㅎ 저도 이제 시작할겁니다.


VS에서 MFC를 사용하는 방법을 공부해서 프로그램을 짜는 것처럼요...



2. MinGW 저는 이친구를 민지라고 부릅니다.

흑... 여친이 없어서... ㅡㅜ 민지더블유 라고 하기도 하고 드믈게 밍더블유라고 하기도 한답니다...

전 짧고 이쁘게 민지라 브릅니다.

1번에서 봤듯이 wxWidgets를 컴파일하고, 컴파일된 wxWidgets을 이용하여 프로그램을 작성해서 실행 모듈을 만드려면 컴파일러가 필요합니다.

그 컴파일러 역할을 민지가 하는 겁니다. 정확하게는 민지에 포함되어 있는 컴파일러를 사용하는거지요.

물론 환경도 유닉스나 리눅스 처럼 만들어 줍니다.

리눅스의 sh나 bash 쉘까지 있으니깐요... 윈도우에서 작업할때 설치해주면 됩니다.

리눅스나 유닉스는 각각 컴파일러가 제공되고 있으니 그대로 쓰면되죠.

리눅스는 gcc 패키지 깔면 컴파일러가 설치되니까 민지가 없어도 되는거죠.

참고로 민지 없이도 윈도우즈 환경에서는 VS5,6,2005 등 비주얼 스튜디오 시리즈 컴파일러가 있어도 되지만, 이 친구들은 비싼 컴파일러를 사야 하기때문에 제 설명서에서는 배제하고 MinGW를 사용하는 것으로 하겠습니다.

안해봤습니다만, 유닉스에서는 cc 컴파일러가 있으니... 뭐 그걸로 되겠죠... (추측성 발언임)
사용자 삽입 이미지
민지가 설치된 곳에서 bash를 실행하니 리눅스와 같은 환경으로 변경되고 ls 명령도 실행이 되지요.



3. Code::Block은 IDE(통합 개발환경)입니다.

프로젝트를 생성하고, 소스를 작성하고, 예쁘게 줄도 맞춰주고, 컴파일 메뉴 누르면 컴파일 해주는 등등의 일을 합니다.

실제 프로그래밍 작업을 하는 환경이라고 보시면됩니다.

코드블럭의 환경설정에다가 1번의 wxWidgets이 컴파일 된 위치도 알려줘야 하고, 2번의 민지가 어디 깔려 있는지 알려줘야 컴파일러를 찾아서 컴파일 해 주고 wxWidgets 라이브러리를 사용할 수 있게 됩니다.

일일이 쉘에서 하거나 에디터 띄워서 작업하던거를 한방에, 메뉴 방식이나 단축키 방식으로 처리 할 수 있는 거지요.
사용자 삽입 이미지



wxWidgets 라이브러리, 컴파일러(민지의 gcc), IDE(통합개발환경;Code::Block-코드블럭) 세가지가 있으면 개발환경이 구축되는 겁니다.



비주얼 스튜디오와 비교한다면 (비주얼 스튜디오가 한덩어러 처럼 보이지만 얘도 아래처럼 내부적으로는 나뉩니다.)

MFC = wxWidgets
비주얼 스튜디오 컴파일러 = MinGW
비주얼 스튜디오 IDE = codeblock

대략 이렇게 되겠습니다.


소개를 이정도로 하고요. 정리를 하자면,

wxWidgets라이브러리를 사용하여, 코드블럭으로 코드를 수정하고, 민지에 있는 gcc 컴파일러로 컴파일 하여 어플리케이션을 만들면 한방에 윈도우, 리눅스, 유닉스, 맥에서 돌아가는 프로그램을 짤 수 있다는 것이 결론인거죠!
물론 컴파일은 각각의 운영체제에서 해야합니다... ㅋ


앞으로 저도 공부해가면서 진행해 보려고 합니다.
2013/05/23 11:33 2013/05/23 11:33

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