처음 목표가 wxwidget  으로 윈도우와 리눅스에서 모두 돌릴 수 있는 프로그램을 만든는 것입니다. 여기에 가장 적합한 GUI 가 wxwidget 으로 판단했습니다. 여기에 가장 적합한 방법이 codeblock이 윈도우즈와 리눅스에서 모두 실행가능한 프로그램이기 때문에 이를 이용하는 방법입니다. 가장 좋은 방법은 윈도우즈에서 만든 프로젝트 그대로 우분투에서 컴파일 가능하다면 좋겠지만, 이게 그대로 되지 않아서 약간의 설정이 필요합니다. 그 방법을 찾아 보도록 합시다.

 가장 쉬운 방법은 운분투에서 새로운 프로젝트를 만든 후, 이 프로젝트에 파일만 끼어 넣는 형태입니다. 그런데, 가장 원시적인 방법일 뿐더러, 지속적으로 하기에는 힘든 부분이 있습니다. 그래서 어떻게 설정을 수정하는 방법으로 컴파일 가능하게 할 수 있는지 테스트 해봤습니다.
 
 그 결과 아래와 같은 방법으로 가능하다는 것을 확인 했습니다.


 우선, 윈도우즈에서 wxwidget 프로젝트를 간단히 만들어 본니다. GUI Builder 는 없고, Application Type 은 Dialog Base 로 했습니다. 나머지는 모두  default 로 설정합니다.
사용자 삽입 이미지
컴파일 후, 실행해 보면 이 처럼 기본적이 창이 뜹니다.

이 프로젝트 자체를 우분투로 가져와서 불러업니다.
그리고 rebuild 해 보면 안됩니다.
-------------- Build: Debug in wxwidget_test ---------------

Skipping file (no compiler program set): resource.rc
Compiling: wxwidget_testApp.cpp
cc1plus: error: unrecognized command line option "-mthreads"
Process terminated with status 1 (0 minutes, 0 seconds)
0 errors, 0 warnings
 -------------------------------------------------------
-mthreads 라는 옵션을 인식하지 못한다고 나옵니다.
인터넷에 찾아 보니 mingw 에서만 사용하는 옵션이라고 합니다. 이런 식으로 windows 용 codeblocks 에서 defualt 로 생성한 프로젝트와 우분트에서 사용하는 옵션의 차이가 발생합니다.
이를 잡아주는 작업이 필요하다. 이를 어떻게 잡아 줄 수 있을까??

간단하게 생각해본다면 우분투의 codeblocks 에서도 같은 프로젝트를 하나 만든 다음, 두 속성을 비교하는 방법을 사용하면 됩니다. 그러한 방법을 사용해서 속성을 맞추어 보면 아래와 같은 방법이 나옵니다.  아래 방법은 컴퓨터 환경에 따라 다르겠지만, 이 같은 개념을 사용해서 설정한다면 아래 같은 방법이 안 통한다고 해도 다른 환경에서도 컴파일 가능하리라 생각됩니다.

 빌드 옵션을 설정하는 곳에서
사용자 삽입 이미지

왼쪽에 Debug , Release 를 선택할 수도 있고 프로젝트 명을 선택할 수도 있습니다. 프로젝트 명을 선택할 경우, target(Debug 나 Release) 과 상관없이 공통적으로 환경설정을 할 수 있습니다.
왼쪽 화면에서 프로젝트 명을 선택 한 후, Compiler Settings 탭의 Other options 과 #defines 을 보면 윈도우즈에만 적용되는 것이 나옵니다. 이를 지워줍니다.
Other options 에서는 -mthreads 를 지우고, `wx-config --cflags` 를 추가 합니다.
 #defines  에서는 __GNUWIN32__ , __WXMSW__ 를 지웁니다.
Linker Setting 에서는 Other Linker Option 에 `wx-config --libs` 를 추가합니다.
그리고 왼쪽에 target 을 설정하는 곳(Debug 와 Releas)을 클릭해서 모든 target 에 대해서 추가되어 있는 Link Library  를 삭제합니다.

이를 수정하고 다시 빌드하면
dlg->SetIcon(wxICON(aaaa)); // To Set App Icon
이 곳에서 에러가 발생하는데, 이 부분을 지우고 다시 빌드 하면 컴파일 성공합니다.
아이콘 설정하는 부분은
리소스 파일에
aaaa ICON "wx/msw/std.ico"
이렇게 되어 있는지라, 윈도우즈 디렉토리 임으로 오류가 발생합니다. 이를 주석 처리해서 빌드해서 실행화면 리눅스에서도 정상적으로 보이게 됩니다.


이 방법으로도 뭔가 부족함이 느껴집니다. 가장 확실한 방법은 리눅스용 target 을 추가 하는 방법으로 보이며
이에 대해서 테스트 중입니다. 이에 대해서도 올리도록 하겠습니다.


 제 환경이 ubuntu-10.04-desktop-i386 입니다.  virtual box 를 통해 설치되어 있는 우분투 입니다.
그리고 저장소는 http://ftp.daum.net/ubuntu 입니다.
우분투의 경우, 간혹 저장소가 달라서 패키지들이 안보이거나 설치되지 않을 수도 있습니다. 이 점 유의하시기 바랍니다.

따로 글을 적기는 하지만 적을 수 있는게 거의 없습니다.


우선 기본 컴파일 환경을 갖추도록 하겠습니다.
build-essential 패키지를 설치해 주세요.
우분투에서 패키지 설치하는 방법은 apt-get install 패키징명 을 이용해도 되고 GUI 프로그램으로 시스템 -> 관리 -> 시맵팁 패키지 관리자 프로그램에서 빠른 검색을 통해 위에 패키지를 찾은 후 리스트 중에 해당 패키지를 찾아 오른쪽 마우스를 누르면 "설치 표시"라는 메뉴가 나옵니다.그 메뉴를 선택하면 추가로 설치 필요한 것들이 나오는데, 그 것들도 표시 될 수 있도록 표시 버튼을 누릅니다.  설치 해야 되는 것을 모두 선택한 후, 적용 버튼을 누르면 알아서 설치하도록 되어 있습니다. 더 자세한 사항은 리눅스 사이트에서 확인 하기 바랍니다. 사실 저도 리눅스에 익숙하지 않습니다. 그래도 잘 모릅니다.

 

그 다음  wxwidgets 은
http://wiki.wxwidgets.org/Installing_and_configuring_under_Ubuntu
여기 나와있는데로
libwxgtk2.8-dev libwxgtk2.8-dbg , 
 를 설치하면 됩니다.



codeblock 의 경우
http://wiki.codeblocks.org/index.php?title=Installing_Code::Blocks_nightly_build_on_Ubuntu
여기 나와 있는 것은 소스를 받아서 빌드 해서 codeblock 을 사용하는 이야기 이고,
그냥  스맵팁 패키지에서 빠른 검색을 통해 codeblock을 찾아서 나오는
codeblocks 와 설치 클릭시 관련이 있다고 나오는 것만 설치했습니다.

설치 후에는 화면 상단의 프로그램 -> 개발 안에 codeblock 을 실행할 수 있는 메뉴가 만들어져 있습니다.
실행하면 gcc 를 자동으로 인식했다고 나온 후, codeblock 화면을 볼 수 있습니다.


이제 기본적으로 설정이 되었는지 윈도우즈 환경과 동일한 방법으로 기본 프로젝트를 생성해서 테스트
해보시기 바랍니다.



wxWidget 설정에 대한 순서대로 올릴려고 했으나 완벽 설정 가이드가 쉽지 않은 관계로 많은 글들을 적지 못해고 일부는 비밀 글로 남아 있다. 따라서 갑자기 이런 글이 올라와서 쌩둥맞게 보일 수도 있다.

어째든 wxFormBuilder 를 사용하다보면 분명히 Event에 대해 특정 함수를 연결했으나 호출되지 않는 경우가 있다. 나도 2번째 이런 경우를 당하다 보니 글을 남길려고 한다.

Property 의 id 항목이 wxID_ANY 으로 남아 있는 경우, 이런 경우가 발생했다. 아이콘이나 메뉴 같은 경우, 새로운 id 를 만들어 두어야 한다.