Ubuntu with wxWidgets

jjuiddong
이동: 둘러보기, 찾기

wxWidgets 설치

  • wxWidgets 설치
    • wxWidgets 3.0.2 를 설치한다.
    • http://www.tarsiersoft.com/addinfo/wxWidgetsInstall.php 문서를 참고하자.
      • ../configure 를 이용해서 옵션을 설정할 수 있다. (이 방식은 모든 리눅스 셋업에서 쓰인다.)
      • 설정할 옵션이 없더라도, ../configure 를 실행해야 상황에 맞게 빌드 셋업 파일들이 만들어진다.
      • mkdir 을 통해 폴더를 생성해서, 그 안에서 빌드를하면, 결과 파일들이 그 폴더안에 저장된다.
      • 즉, 여러 방식을 빌드를 폴더별로 나눠저 관리할 수 있다. 예를들어, debug, release 빌드들을 나눌 수 있다.
      • wx-config 명령어로 현재 wxWidgets 빌드 상태를 확인할 수 있다.
      • make로 빌드할 때는 문제없지만, make install 명령에서부터는 관리자 계정으로 실행해야 한다.


su
password ~
mkdir buildr
cd buildr
../configure 
make
make install
ldconfig

Makefile 만들기.

  • 우선 sample에 있는 makefile을 가져와서 수정하면서 쓰자.
  • Makefile 매크로들
    • top_srcdir : wxWidgets 경로
    • src_dir : 현재 소스파일 경로. Makefile 파일에서 상대경로를 뜻하며, 현재 같은 위치에 있기 때문에 . 로 설정된다.
    • CXX : 컴파일 버젼
    • CXXFLAGS : 컴파일 옵션
    • wx_top_builddir: wxWidgets 경로 (top_srcdir 과 같은 용도로 쓰이고 있어서, 정리가 필요하다)
  • 신경써서 수정해야 될 부분
    • srcdir
      • sample하고 소스파일 경로가 다르니 수정해야 한다.
    • top_srcdir
      • 현재 프로젝트 소스에서, 상대경로로 wxWidgets 라이브러리 경로를 설정해주자.
    • ~OBJECTS
      • 새 파일이 추가될 때마다, 파일이름을 추가하자.
    • 소스 의존성 관계를 파일이 추가될 때마다, 추가하자.
  • 예제 Makefile


# =========================================================================
#     This makefile was generated by
#     Bakefile 0.2.9 (http://www.bakefile.org)
#     Do not modify, all changes will be overwritten!
# =========================================================================




prefix = /usr/local
exec_prefix = ${prefix}
datarootdir = ${prefix}/share
INSTALL = /usr/bin/install -c
EXEEXT = 
WINDRES = 
SETFILE = 
NM = nm
BK_DEPS = /home/odroid/work/wxWidgets-3.0.2/buildr/bk-deps
srcdir = .
top_srcdir = ../../wxWidgets-3.0.2
LIBS = -lz -ldl -lm
LDFLAGS_GUI = 
CXX = g++
CXXFLAGS = -DWX_PRECOMP -pthread -O2 -fno-strict-aliasing -pthread -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/libpng12 -pthread -I/usr/local/include/pango-1.0 -I/usr/include/gtk-unix-print-2.0 -I/usr/include/gtk-2.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz -fvisibility=hidden -fvisibility-inlines-hidden
CPPFLAGS = -D_FILE_OFFSET_BITS=64 -I${wx_top_builddir}/lib/wx/include/gtk2-unicode-3.0 -I${top_srcdir}/include -pthread -I/usr/local/include/pango-1.0 -I/usr/include/gtk-2.0 -I/usr/lib/arm-linux-gnueabihf/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/harfbuzz -pthread -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/arm-linux-gnueabihf/glib- 2.0/include -I/usr/include/libxml2
LDFLAGS = -pthread   
WX_LIB_FLAVOUR = 
TOOLKIT = GTK
TOOLKIT_LOWERCASE = gtk
TOOLKIT_VERSION = 2
TOOLCHAIN_FULLNAME = gtk2-unicode-3.0
EXTRALIBS = -pthread   -Wl,--version-script,$(wx_top_builddir)/version-script -lz -ldl -lm 
EXTRALIBS_XML =  -lexpat
EXTRALIBS_GUI = -pthread -L/usr/local/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lfreetype -lgthread-2.0 -lglib-2.0 -lX11 -lXxf86vm -lSM -L/usr/local/lib -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype -lnotify -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lpng -lz -ljpeg -ltiff
CXXWARNINGS = -Wall -Wundef -Wunused-parameter -Wno-ctor-dtor-privacy -Woverloaded-virtual
HOST_SUFFIX = 
SAMPLES_RPATH_FLAG = -Wl,-rpath,$(wx_top_builddir)/lib
wx_top_builddir = /home/odroid/work/wxWidgets-3.0.2/buildr 

### Variables: ###

DESTDIR = 
WX_RELEASE = 3.0
WX_VERSION = $(WX_RELEASE).2
LIBDIRNAME = $(wx_top_builddir)/lib
MINIMAL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \
	$(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \
	-I$(srcdir) $(__DLLFLAG_p) -I$(srcdir)/../../samples $(CXXWARNINGS) \
	$(CPPFLAGS) $(CXXFLAGS)
MINIMAL_OBJECTS =  \
	$(__font___win32rc) \
	$(__font_os2_lib_res) \
	TP-CAMPro.o \
	stdafx.o \
	CLApp.o \
	CLFrame.o \
	MainPanel.o \
	OperatorSetPanel.o \
	Bitmap3Button.o \
	Bitmap3ButtonEx.o \
	Bitmap2Button.o \
	Bitmap2ButtonEx.o \
	CameraFullPanel.o \
	CameraSetPanel.o \
	DateSetPanel.o \
	EnforcementFullPanel.o \
	EnforcementPanel.o \
	EnforcementSetPanel.o \
	FileMngFullPanel.o \
	FileMngPanel.o \
	LoginPanel.o \
	BatteryDisplay.o \
	DateDisplay.o \
	KeyboardDialog.o \
	KeyboardEngPanel.o \
	MoviePanel.o \
	Global.o \
	NumberPadDialog.o \
	NumberPadPanel.o \
	Controller.o


SRCS = $(MINIMAL_OBJECTS:.o=.cpp)

### Conditionally set variables: ### 

#CXXC = $(CXX)
CXXC = $(BK_DEPS) $(CXX)
#PORTNAME = base
PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION)
#WXBASEPORT = _carbon
#WXDEBUGFLAG = d
WXUNICODEFLAG = u
#WXUNIVNAME = univ
EXTRALIBS_FOR_BASE = $(EXTRALIBS)
#EXTRALIBS_FOR_BASE = $(EXTRALIBS) \
#	$(EXTRALIBS_XML) $(EXTRALIBS_GUI)
EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)
#EXTRALIBS_FOR_GUI = 
__font___mac_setfilecmd = @true
#__font___mac_setfilecmd = \
#	$(SETFILE) -t APPL font$(EXEEXT)
#__WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
#__WXUNIV_DEFINE_p_2 = --define __WXUNIVERSAL__
#__DEBUG_DEFINE_p = -DwxDEBUG_LEVEL=0
#__DEBUG_DEFINE_p_2 = --define wxDEBUG_LEVEL=0
#__EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
#__EXCEPTIONS_DEFINE_p_2 = --define wxNO_EXCEPTIONS
#__RTTI_DEFINE_p = -DwxNO_RTTI
#__RTTI_DEFINE_p_2 = --define wxNO_RTTI
#__THREAD_DEFINE_p = -DwxNO_THREADS
#__THREAD_DEFINE_p_2 = --define wxNO_THREADS
__DLLFLAG_p = -DWXUSINGDLL
__DLLFLAG_p_2 = --define WXUSINGDLL
COND_PLATFORM_OS2_1___font___os2_emxbindcmd = $(NM) TP-CAMPro$(EXEEXT) | if grep -q \
	pmwin.763 ; then emxbind -ep TP-CAMPro$(EXEEXT) ; fi
#__font___os2_emxbindcmd = $(COND_PLATFORM_OS2_1___font___os2_emxbindcmd)
#__RCDEFDIR_p_1 = --include-dir \
#	$(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
#__font___win32rc = font_sample_rc.o
#__font_os2_lib_res = \
#	$(top_srcdir)/include/wx/os2/wx.res
#__font_app_Contents_PkgInfo___depname \
#	= font.app/Contents/PkgInfo
#__font_bundle___depname = font_bundle
#____font_BUNDLE_TGT_REF_DEP = \
#	$(__font_app_Contents_PkgInfo___depname)
#____font_BUNDLE_TGT_REF_DEP \
#	= $(__font_app_Contents_PkgInfo___depname)
#____font_BUNDLE_TGT_REF_DEP \
#	= $(__font_app_Contents_PkgInfo___depname)
#____font_BUNDLE_TGT_REF_DEP \
#	= $(__font_app_Contents_PkgInfo___depname)
#____font_BUNDLE_TGT_REF_DEP = \
#	$(__font_app_Contents_PkgInfo___depname)
COND_MONOLITHIC_0___WXLIB_CORE_p = \
	-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_core-$(WX_RELEASE)$(HOST_SUFFIX)
__WXLIB_CORE_p = $(COND_MONOLITHIC_0___WXLIB_CORE_p)
COND_MONOLITHIC_0___WXLIB_BASE_p = \ 
	-lwx_base$(WXBASEPORT)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
__WXLIB_BASE_p = $(COND_MONOLITHIC_0___WXLIB_BASE_p)
COND_MONOLITHIC_1___WXLIB_MONO_p = \
	-lwx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
#__WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
#__LIB_SCINTILLA_IF_MONO_p \
#	= \
#	-lwxscintilla$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
#__LIB_TIFF_p \
#	= \
#	-lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
#__LIB_JPEG_p \
#	= \
#	-lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
#__LIB_PNG_p \
#	= \
#	-lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
#__LIB_ZLIB_p = \
#	-lwxzlib$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
COND_wxUSE_REGEX_builtin___LIB_REGEX_p = \ 
	-lwxregex$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
__LIB_REGEX_p = $(COND_wxUSE_REGEX_builtin___LIB_REGEX_p)
#__LIB_EXPAT_p = \
#	-lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX) 

### Targets: ###

all: TP-CAMPro$(EXEEXT) $(__font_bundle___depname) 

install: 

uninstall: 

install-strip: install

clean: 
	rm -rf ./.deps ./.pch
	rm -f ./*.o
	rm -f TP-CAMPro$(EXEEXT)
	rm -rf font.app

distclean: clean
	rm -f config.cache config.log config.status bk-deps bk-make-pch shared-ld-sh Makefile

TP-CAMPro$(EXEEXT): $(MINIMAL_OBJECTS) $(__font___win32rc)
	$(CXX) -o $@ $(MINIMAL_OBJECTS)    -L$(LIBDIRNAME) $(LDFLAGS_GUI) $(SAMPLES_RPATH_FLAG) $(LDFLAGS)  $(__WXLIB_CORE_p)  $(__WXLIB_BASE_p)    $(__WXLIB_MONO_p) $(__LIB_SCINTILLA_IF_MONO_p) $(__LIB_TIFF_p) $(__LIB_JPEG_p) $(__LIB_PNG_p)  $(EXTRALIBS_FOR_GUI) $(__LIB_ZLIB_p) $(__LIB_REGEX_p) $(__LIB_EXPAT_p) $(EXTRALIBS_FOR_BASE) $(LIBS)
	
	$(__font___mac_setfilecmd)
	$(__font___os2_emxbindcmd)

#font.app/Contents/PkgInfo: font$(EXEEXT) $(top_srcdir)/src/osx/carbon/Info.plist.in $(top_srcdir)/src/osx/carbon/wxmac.icns
#	mkdir -p font.app/Contents
#	mkdir -p font.app/Contents/MacOS
#	mkdir -p font.app/Contents/Resources
#	
#	
#	sed -e "s/IDENTIFIER/`echo $(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`/" \
#	-e "s/EXECUTABLE/font/" \
#	-e "s/VERSION/$(WX_VERSION)/" \
#	$(top_srcdir)/src/osx/carbon/Info.plist.in >font.app/Contents/Info.plist
#	
#	
#	/bin/echo "APPL????" >font.app/Contents/PkgInfo
#	
#	
#	ln -f font$(EXEEXT) font.app/Contents/MacOS/font
#	
#	
#	cp -f $(top_srcdir)/src/osx/carbon/wxmac.icns font.app/Contents/Resources/wxmac.icns 

#font_bundle: $(____font_BUNDLE_TGT_REF_DEP)

font_sample_rc.o: $(srcdir)/../../samples/sample.rc
	$(WINDRES) -i$< -o$@    --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_2) $(__DEBUG_DEFINE_p_2)  $(__EXCEPTIONS_DEFINE_p_2) $(__RTTI_DEFINE_p_2)  $(__THREAD_DEFINE_p_2)   --include-dir $(srcdir) $(__DLLFLAG_p_2) --include-dir $(srcdir)/../../samples $(__RCDEFDIR_p_1) --include-dir  $(top_srcdir)/include

.cpp.o:
	$(CXXC) $(MINIMAL_CXXFLAGS) -g -c $<

TP-CAMPro.o: $(srcdir)/TP-CAMPro.cpp $(srcdir)/CLApp.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
stdafx.o: $(srcdir)/stdafx.cpp $(srcdir)/stdafx.h
CLApp.o: $(srcdir)/CLApp.cpp $(srcdir)/stdafx.h
CLFrame.o: $(srcdir)/CLFrame.cpp $(srcdir)/stdafx.h
MainPanel.o: $(srcdir)/MainPanel.cpp $(srcdir)/CLFrame.h $(srcdir)/Bitmap3Button.h $(srcdir)/BatteryDisplay.h $(srcdir)/DateDisplay.h $(srcdir)/stdafx.h
OperatorSetPanel.o: $(srcdir)/OperatorSetPanel.cpp $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
Bitmap3Button.o: $(srcdir)/Bitmap3Button.cpp $(srcdir)/Bitmap3Button.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
Bitmap3ButtonEx.o: $(srcdir)/Bitmap3ButtonEx.cpp $(srcdir)/Bitmap3ButtonEx.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
Bitmap2Button.o: $(srcdir)/Bitmap2Button.cpp $(srcdir)/Bitmap2Button.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
Bitmap2ButtonEx.o: $(srcdir)/Bitmap2ButtonEx.cpp $(srcdir)/Bitmap2ButtonEx.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
CameraFullPanel.o: $(srcdir)/CameraFullPanel.cpp $(srcdir)/CameraFullPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
CameraSetPanel.o: $(srcdir)/CameraSetPanel.cpp $(srcdir)/CameraSetPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
DateSetPanel.o: $(srcdir)/DateSetPanel.cpp $(srcdir)/DateSetPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
EnforcementFullPanel.o: $(srcdir)/EnforcementFullPanel.cpp $(srcdir)/EnforcementFullPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
EnforcementPanel.o: $(srcdir)/EnforcementPanel.cpp $(srcdir)/EnforcementPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
EnforcementSetPanel.o: $(srcdir)/EnforcementSetPanel.cpp $(srcdir)/EnforcementSetPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
FileMngFullPanel.o: $(srcdir)/FileMngFullPanel.cpp $(srcdir)/FileMngFullPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
FileMngPanel.o: $(srcdir)/FileMngPanel.cpp $(srcdir)/FileMngPanel.h $(srcdir)/CaptureImage.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
LoginPanel.o: $(srcdir)/LoginPanel.cpp $(srcdir)/LoginPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
BatteryDisplay.o: $(srcdir)/BatteryDisplay.cpp $(srcdir)/BatteryDisplay.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
DateDisplay.o: $(srcdir)/DateDisplay.cpp $(srcdir)/DateDisplay.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
KeyboardDialog.o: $(srcdir)/KeyboardDialog.cpp $(srcdir)/KeyboardDialog.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
KeyboardEngPanel.o: $(srcdir)/KeyboardEngPanel.cpp $(srcdir)/KeyboardEngPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
MoviePanel.o: $(srcdir)/MoviePanel.cpp $(srcdir)/MoviePanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
Global.o: $(srcdir)/Global.cpp $(srcdir)/Global.h $(srcdir)/stdafx.h
NumberPadDialog.o: $(srcdir)/NumberPadDialog.cpp $(srcdir)/NumberPadDialog.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
NumberPadPanel.o: $(srcdir)/NumberPadPanel.cpp $(srcdir)/NumberPadPanel.h $(srcdir)/CLFrame.h $(srcdir)/stdafx.h
Controller.o: $(srcdir)/Controller.cpp $(srcdir)/Controller.h $(srcdir)/stdafx.h 


# Include dependency info, if present:
-include ./.deps/*.d

.PHONY: all install uninstall clean distclean font_bundle

에러 처리

개인 도구
이름공간

변수
행위
둘러보기
도구모음