Ubuntu with wxWidgets

jjuiddong
Jjuiddong (토론 | 기여) 사용자의 2015년 5월 25일 (월) 20:13 판

이동: 둘러보기, 찾기

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


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



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

      1. 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)

      1. Conditionally set variables: ###
  1. CXXC = $(CXX)

CXXC = $(BK_DEPS) $(CXX)

  1. PORTNAME = base

PORTNAME = $(TOOLKIT_LOWERCASE)$(TOOLKIT_VERSION)

  1. WXBASEPORT = _carbon
  2. WXDEBUGFLAG = d

WXUNICODEFLAG = u

  1. WXUNIVNAME = univ

EXTRALIBS_FOR_BASE = $(EXTRALIBS)

  1. EXTRALIBS_FOR_BASE = $(EXTRALIBS) \
  2. $(EXTRALIBS_XML) $(EXTRALIBS_GUI)

EXTRALIBS_FOR_GUI = $(EXTRALIBS_GUI)

  1. EXTRALIBS_FOR_GUI =

__font___mac_setfilecmd = @true

  1. __font___mac_setfilecmd = \
  2. $(SETFILE) -t APPL font$(EXEEXT)
  3. __WXUNIV_DEFINE_p = -D__WXUNIVERSAL__
  4. __WXUNIV_DEFINE_p_2 = --define __WXUNIVERSAL__
  5. __DEBUG_DEFINE_p = -DwxDEBUG_LEVEL=0
  6. __DEBUG_DEFINE_p_2 = --define wxDEBUG_LEVEL=0
  7. __EXCEPTIONS_DEFINE_p = -DwxNO_EXCEPTIONS
  8. __EXCEPTIONS_DEFINE_p_2 = --define wxNO_EXCEPTIONS
  9. __RTTI_DEFINE_p = -DwxNO_RTTI
  10. __RTTI_DEFINE_p_2 = --define wxNO_RTTI
  11. __THREAD_DEFINE_p = -DwxNO_THREADS
  12. __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

  1. __font___os2_emxbindcmd = $(COND_PLATFORM_OS2_1___font___os2_emxbindcmd)
  2. __RCDEFDIR_p_1 = --include-dir \
  3. $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
  4. __font___win32rc = font_sample_rc.o
  5. __font_os2_lib_res = \
  6. $(top_srcdir)/include/wx/os2/wx.res
  7. __font_app_Contents_PkgInfo___depname \
  8. = font.app/Contents/PkgInfo
  9. __font_bundle___depname = font_bundle
  10. ____font_BUNDLE_TGT_REF_DEP = \
  11. $(__font_app_Contents_PkgInfo___depname)
  12. ____font_BUNDLE_TGT_REF_DEP \
  13. = $(__font_app_Contents_PkgInfo___depname)
  14. ____font_BUNDLE_TGT_REF_DEP \
  15. = $(__font_app_Contents_PkgInfo___depname)
  16. ____font_BUNDLE_TGT_REF_DEP \
  17. = $(__font_app_Contents_PkgInfo___depname)
  18. ____font_BUNDLE_TGT_REF_DEP = \
  19. $(__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)

  1. __WXLIB_MONO_p = $(COND_MONOLITHIC_1___WXLIB_MONO_p)
  2. __LIB_SCINTILLA_IF_MONO_p \
  3. = \
  4. -lwxscintilla$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
  5. __LIB_TIFF_p \
  6. = \
  7. -lwxtiff$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
  8. __LIB_JPEG_p \
  9. = \
  10. -lwxjpeg$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
  11. __LIB_PNG_p \
  12. = \
  13. -lwxpng$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
  14. __LIB_ZLIB_p = \
  15. -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)

  1. __LIB_EXPAT_p = \
  2. -lwxexpat$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)-$(WX_RELEASE)$(HOST_SUFFIX)
      1. 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)

  1. font.app/Contents/PkgInfo: font$(EXEEXT) $(top_srcdir)/src/osx/carbon/Info.plist.in $(top_srcdir)/src/osx/carbon/wxmac.icns
  2. mkdir -p font.app/Contents
  3. mkdir -p font.app/Contents/MacOS
  4. mkdir -p font.app/Contents/Resources
  5. sed -e "s/IDENTIFIER/`echo $(srcdir) | sed -e 's,\.\./,,g' | sed -e 's,/,.,g'`/" \
  6. -e "s/EXECUTABLE/font/" \
  7. -e "s/VERSION/$(WX_VERSION)/" \
  8. $(top_srcdir)/src/osx/carbon/Info.plist.in >font.app/Contents/Info.plist
  9. /bin/echo "APPL????" >font.app/Contents/PkgInfo
  10. ln -f font$(EXEEXT) font.app/Contents/MacOS/font
  11. cp -f $(top_srcdir)/src/osx/carbon/wxmac.icns font.app/Contents/Resources/wxmac.icns
  1. 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


  1. Include dependency info, if present:

-include ./.deps/*.d

.PHONY: all install uninstall clean distclean font_bundle

에러 처리

개인 도구
이름공간

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