{{{#!html CEDET wxWidgets ÀÚµ¿¿Ï¼º
}}} emacs¿¡¼­ CEDET(semantic)·Î wxWidgets ¶óÀ̺귯¸® ÀÚµ¿¿Ï¼ºÇÏ´Â ¹æ¹ýÀº ¾Æ·¡ »çÀÌÆ®¿¡ ³ª¿ÍÀÖÁö¸¸[[br]] http://www.emacswiki.org/emacs/SemanticLibraryParsing#toc2 "/usr/include/wx-2.8/wx" ÇÏÀ§ µð·ºÅ丮¿¡ Àִ Ŭ·¡½º,[[br]] ¿¹¸¦ µé¾î wxStaticTextBaseó·³ µÚ¿¡ Base°¡ ºÙÀº Ŭ·¡½º´Â ÀÚµ¿¿Ï¼ºÀÌ ¾ÈµË´Ï´Ù. ±×·¡¼­ À̸® Àú¸® ½ÇÇèÇغ» °á°ú¸¦ ³²°ÜµÓ´Ï´Ù.[[br]] (ÀÌÀü wxWidgets °ü·Ã emacs ¼³Á¤ ¹× ÀÌÀü ij½Ã(semanticdb.cache Æú´õ) »èÁ¦Çϼ¼¿ä!!!) ÀÏ´Ü wxWidgets Çì´õ ÆÄÀϵéÀÇ "#if wxUSE_XXXXX ... #endif" ºÎºÐÀ» ¹«·ÂÈ­ ½ÃÅ°±â À§ÇØ ¾Æ·¡ ¸í·É¾î·Î ÆÄÀÏÀ» Çϳª ¸¸µç ´ÙÀ½ {{{ $ find /usr/include/wx-2.8/wx -type f -print0 | xargs -0 -e grep -nH -e wxUSE > wxUSE.orig }}} Àû´çÈ÷ °¡°øÇؼ­ {{{ $ cat wxUSE.orig | sed -e 's/.*\(wxUSE_[[:alpha:]]\+\).*/#define \1/' | grep -e '^#define' | sort -u > wxUSE.h }}} ¾Æ·¡ ÆÄÀÏÀ» ¸¸µì´Ï´Ù. (±ÍÂúÀ¸½Å ºÐÀº ¾Æ·¡ copy&pasteÇؼ­ ¸¸µå¼¼¿ä.)[[br]] wxUSE.h {{{ #define wxUSE_ABI #define wxUSE_ABOUTDLG #define wxUSE_ACCEL #define wxUSE_ACCESSIBILITY #define wxUSE_ANIMATIONCTRL #define wxUSE_APPLE #define wxUSE_ARCHIVE #define wxUSE_ARRAY #define wxUSE_AUI #define wxUSE_BASE #define wxUSE_BITMAP #define wxUSE_BITMAPCOMBOBOX #define wxUSE_BMPBUTTON #define wxUSE_BOOKCTRL #define wxUSE_BORDER #define wxUSE_BUILTIN #define wxUSE_BUSYINFO #define wxUSE_BUTTON #define wxUSE_CALENDARCTRL #define wxUSE_CARET #define wxUSE_CHECKBOX #define wxUSE_CHECKLISTBOX #define wxUSE_CHOICE #define wxUSE_CHOICEBOOK #define wxUSE_CHOICEDLG #define wxUSE_CLIPBOARD #define wxUSE_CMDLINE #define wxUSE_COLLPANE #define wxUSE_COLOURDLG #define wxUSE_COLOURPICKERCTRL #define wxUSE_COMBOBOX #define wxUSE_COMBOCTRL #define wxUSE_CONFIG #define wxUSE_CONSTRAINTS #define wxUSE_CONTROLS #define wxUSE_CRASHREPORT #define wxUSE_DATAOBJ #define wxUSE_DATAVIEWCTRL #define wxUSE_DATEPICKCTRL #define wxUSE_DATETIME #define wxUSE_DDE #define wxUSE_DEBUG #define wxUSE_DEPRECATED #define wxUSE_DIALUP #define wxUSE_DIRDLG #define wxUSE_DIRPICKERCTRL #define wxUSE_DISPLAY #define wxUSE_DOC #define wxUSE_DRAG #define wxUSE_DRAGIMAGE #define wxUSE_DYNAMIC #define wxUSE_DYNLIB #define wxUSE_ENH #define wxUSE_EXCEPTIONS #define wxUSE_EXTENDED #define wxUSE_FFILE #define wxUSE_FILE #define wxUSE_FILECONFIG #define wxUSE_FILEDLG #define wxUSE_FILEPICKERCTRL #define wxUSE_FILESYSTEM #define wxUSE_FINDREPLDLG #define wxUSE_FONTDLG #define wxUSE_FONTMAP #define wxUSE_FONTPICKERCTRL #define wxUSE_FS #define wxUSE_FSVOLUME #define wxUSE_FUNC #define wxUSE_GAUGE #define wxUSE_GENERIC #define wxUSE_GENERICDATAVIEWCTRL #define wxUSE_GEOMETRY #define wxUSE_GIF #define wxUSE_GLCANVAS #define wxUSE_GLOBAL #define wxUSE_GRAPHICS #define wxUSE_GRID #define wxUSE_GUI #define wxUSE_HELP #define wxUSE_HOTKEY #define wxUSE_HTML #define wxUSE_HYPERLINKCTRL #define wxUSE_ICO #define wxUSE_IDLEMENUUPDATES #define wxUSE_IFF #define wxUSE_IMAGE #define wxUSE_IMAGLIST #define wxUSE_INTL #define wxUSE_IOSTREAMH #define wxUSE_IPC #define wxUSE_IPV #define wxUSE_JOYSTICK #define wxUSE_LIBGNOMEPRINT #define wxUSE_LIBGNOMEVFS #define wxUSE_LIBJPEG #define wxUSE_LIBMSPACK #define wxUSE_LIBPNG #define wxUSE_LIBTIFF #define wxUSE_LISTBOOK #define wxUSE_LISTBOX #define wxUSE_LISTCTRL #define wxUSE_LOG #define wxUSE_LOGGUI #define wxUSE_LOGWINDOW #define wxUSE_LONGLONG #define wxUSE_MDI #define wxUSE_MEDIACTRL #define wxUSE_MEMBER #define wxUSE_MEMORY #define wxUSE_MENUS #define wxUSE_METAFILE #define wxUSE_MFC #define wxUSE_MIMETYPE #define wxUSE_MINIFRAME #define wxUSE_MOUSEWHEEL #define wxUSE_MS #define wxUSE_MSGDLG #define wxUSE_NATIVE #define wxUSE_NESTED #define wxUSE_NO #define wxUSE_NORLANDER #define wxUSE_NOTEBOOK #define wxUSE_NUMBERDLG #define wxUSE_ODBC #define wxUSE_ODCOMBOBOX #define wxUSE_OLD #define wxUSE_OLE #define wxUSE_ON #define wxUSE_OWNER #define wxUSE_PALETTE #define wxUSE_PANGO #define wxUSE_PCX #define wxUSE_PLUGINS #define wxUSE_PNM #define wxUSE_POPUPWIN #define wxUSE_POSTSCRIPT #define wxUSE_PRINTF #define wxUSE_PRINTING #define wxUSE_PROGRESSDLG #define wxUSE_PROLOGIO #define wxUSE_PROTOCOL #define wxUSE_QUERY #define wxUSE_RADIOBOX #define wxUSE_RADIOBTN #define wxUSE_REGEX #define wxUSE_RESOURCES #define wxUSE_RICHTEXT #define wxUSE_SASH #define wxUSE_SCROLLBAR #define wxUSE_SEARCHCTRL #define wxUSE_SLIDER #define wxUSE_SNGLINST #define wxUSE_SOCKETS #define wxUSE_SOUND #define wxUSE_SPINBTN #define wxUSE_SPINCTRL #define wxUSE_SPLASH #define wxUSE_SPLINES #define wxUSE_SPLITTER #define wxUSE_STACKWALKER #define wxUSE_STARTUP #define wxUSE_STATBMP #define wxUSE_STATBOX #define wxUSE_STATLINE #define wxUSE_STATTEXT #define wxUSE_STATUSBAR #define wxUSE_STD #define wxUSE_STDPATHS #define wxUSE_STL #define wxUSE_STOPWATCH #define wxUSE_STREAM #define wxUSE_STREAMS #define wxUSE_SYSTEM #define wxUSE_TAB #define wxUSE_TARSTREAM #define wxUSE_TEXTBUFFER #define wxUSE_TEXTCTRL #define wxUSE_TEXTDLG #define wxUSE_TEXTFILE #define wxUSE_TGA #define wxUSE_THREADS #define wxUSE_TIMER #define wxUSE_TIPWINDOW #define wxUSE_TOGGLEBTN #define wxUSE_TOOLBAR #define wxUSE_TOOLBOOK #define wxUSE_TOOLTIPS #define wxUSE_TREEBOOK #define wxUSE_TREECTRL #define wxUSE_UNICODE #define wxUSE_URL #define wxUSE_VALIDATORS #define wxUSE_VARIANT #define wxUSE_WCHAR #define wxUSE_WEBKIT #define wxUSE_WIN #define wxUSE_WIZARDDLG #define wxUSE_WX #define wxUSE_WXDIB #define wxUSE_WXHTML #define wxUSE_WXVSNPRINTF #define wxUSE_XML #define wxUSE_XPM #define wxUSE_XRC #define wxUSE_XXX #define wxUSE_ZIPSTREAM #define wxUSE_ZLIB }}} ±×·± ´ÙÀ½ ¾Æ·¡Ã³·³ ¼³Á¤ÇØ ÁÝ´Ï´Ù.[[br]] .emacs ÆÄÀÏ {{{ (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("WXDLLIMPEXP_CORE" . "")) (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("WXDLLIMPEXP_FWD_CORE" . "")) (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("WXDLLIMPEXP_BASE" . "")) (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("WXDLLIMPEXP_FWD_BASE" . "")) (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("WXDLLIMPEXP_FWD_XML" . "")) (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("WXDLLIMPEXP_ADV" . "")) (require 'hideif) (setq hif-ifx-regexp (concat hif-cpp-prefix "\\(el\\)?if\\(n?def\\)?[ \t]+")) (add-to-list 'semantic-lex-c-preprocessor-symbol-file "~/¼³Ä¡/°æ·Î/wxUSE.h") (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__WXGTK20__" . "__cplusplus")) (semantic-add-system-include "/usr/include/wx-2.8" 'c++-mode) }}} Âü°íÀûÀ¸·Î hif-ifx-regexp º¯¼ö¸¦ °íÄ£ °ÍÀº "#elif defined( ... )"¸¦ Á¦´ë·Î ÆĽÌÇϱâ À§ÇÑ °ÍÀÌ°í {{{ (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__WXGTK20__" . "__cplusplus")) }}} ÀÌ ºÎºÐÀÌ ÇÊ¿äÇÑ ÀÌÀ¯´Â, ¿¹¸¦ µé¾î[[br]] "/usr/include/wx-2.8/wx/stattext.h"¸¦ º¸¸é {{{ #if defined(__WXUNIVERSAL__) #include "wx/univ/stattext.h" #elif defined(__WXMSW__) #include "wx/msw/stattext.h" #elif defined(__WXMOTIF__) #include "wx/motif/stattext.h" #elif defined(__WXGTK20__) #include "wx/gtk/stattext.h" #elif defined(__WXGTK__) #include "wx/gtk1/stattext.h" #elif defined(__WXMAC__) #include "wx/mac/stattext.h" #elif defined(__WXCOCOA__) #include "wx/cocoa/stattext.h" #elif defined(__WXPM__) #include "wx/os2/stattext.h" #elif defined(__WXPALMOS__) #include "wx/palmos/stattext.h" #endif }}} ÀÌ·± ºÎºÐÀÌ Àִµ¥ {{{"#elif defined(__WXGTK20__)"}}} ºÎºÐÀ» true·Î ¸¸µé¾î ÁÖ±â À§ÇÑ °ÍÀÔ´Ï´Ù.[[br]] MSÀ©µµ¿ì¿¡¼­ ¶ó¸é ¾Æ·¡ ó·³ º¯°æÇØ¾ß ÇÒµí...(Å×½ºÆ® ÇÊ¿ä) {{{ (add-to-list 'semantic-lex-c-preprocessor-symbol-map '("__WXMSW__" . "__cplusplus")) }}} ¸¶Áö¸·À¸·Î Å×½ºÆ®ÇØ º¾´Ï´Ù.[[br]] wxStaticTextBase.cc {{{ #include int main(int argc, char *argv[]) { wxStaticTextBase b; b.Get return 0; } }}} wxStaticTextBase.png attachment:wxStaticTextBase.png wxStaticText.cc {{{ #include int main(int argc, char *argv[]) { wxStaticText w; w.Get return 0; } }}} wxStaticText.png attachment:wxStaticText.png (!) [wiki:primewizard] - 20101125