MS윈도우 XP에서 EmacsW32로 Gtkmm(C++) 프로그래밍...그리고 잡설.....

points
제가 좋아하는 데비안 lenny에서 emacs로 Gtkmm 프로그래밍하며 emacs에 서서히 중독되어가다
MS윈도우 XP에서도 emacs를 사용하고 싶어서 MinGW, MSYS, Gtkmm, EmacsW32 등을 설치,테스트 했는데
별 어려움없이 잘 되어서 기념샷 한방!
그리고 필요하신 분들을 위해 절차 남겨둡니다.
1)MinGW 설치
Automated MinGW Installer에서 MinGW-5.1.4.exe 설치
(패키지 선택하는 곳에서 current가 에러나고 안되면 previous로 시도하세요.)
설치중 Choose Components의 콤보박스에서 Full로 설치하였습니다.
MinGW base tools, g++ compiler, MinGW Make 정도만 설치해도 될 것 같았지만 배우는 과정이기 때문에...
C:\_GNU_ 아래에 다른 툴,라이브러리들도 다 집어 넣을려고 설치 폴더를 아래 처럼했습니다.
C:\_GNU_\MinGW
설치완료후 환경변수를 추가해 줍니다.
내 컴퓨터(My Computer) 오른쪽 마우스 클릭 -> 속성(Properties) -> 고급(Advanced)탭 아래 부분 환경변수(Environment Variables) 버튼 클릭후
시스템변수(System Variables)의 Path 앞부분에 C:\MinGW 설치폴더\bin (저 같은 경우 C:\_GNU_\MinGW\bin) 추가해 줍니다.
앞부분에 추가하는 이유는 혹시나 MS윈도우에 같은 명령어가 있을 경우 MinGW의 것이 먼저 사용되도록 하기 위해서 입니다.
(영문 MS윈도우 쓰는 관계로 위 한글 용어가 맞는지는 모르겠습니다. ^^;)
참고:
http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite
2)GDB 설치
GNU Source-Level Debugger에서 gdb-6.8-mingw-3.tar.bz2 다운로드
압축 해제후 MinGW 설치 폴더에 덮어씁니다.
(bin은 bin폴더로 등등 이런식으로...)
3)MSYS 설치
i)MSYS Base System 설치
MSYS Base System에서 밑에 부분에 있는 Current Release: msys-1.0.10 를 클릭하면 나오는
MSYS-1.0.10.exe 설치
설치 위치는 C:\_GNU_ 아래 C:\_GNU_\msys\1.0 에 설치했습니다.
ii)msysDTK 설치
MSYS Supplementary Tools에서 Current Release: msysDTK-1.0.1 클릭후 msysDTK-1.0.1.exe 설치
iii)msysCORE 설치
MSYS Base System에서 msysCORE-1.0.11-20080826.tar.gz 다운로드
압축해제후
MSYS Base System 설치했던 C:\_GNU_\msys\1.0 폴더에 덮어쓰시면 됩니다.
(msysCORE-1.0.11에 기존 설치프로그램으로 설치되는 것 보다 좀 더 최신 프로그램들이 들어있는 것으로 보임)
참고사항으로 c드라이브를 사용하기 위헤 /etc/fstab 에 추가해서 마운트 안해도
$ cd c: or $ cd c/ 로 바로 전환이 됩니다.
($ mount 명령 실행하면 리스트 나옴)
그리고 c:/Documents and Settings/자신의계정/Desktop 을 마운트(?)하고 싶어서
이리저리 테스트 해보던 중 MSYS 홈에 폴더(Desktop)를 만들어 주고
/etc/fstab 에
c:/DOCUME~1/자신의계정/Desktop /home/자신의계정/Desktop이렇게 하고 재부팅하니 인식이 됩니다.
또한 단독 실행된 MSYS 에서는 한글 입출력이 안되는데 5)번 처럼 emacs 안에서 w32shell을 MSYS로 하니 잘 됩니다.
참고:
http://www.mingw.org/wiki/msys
문자열 복사는 마우스 왼쪽 버튼 드래그, 붙여넣기는 가운데(휠) 버튼
4)gtkmm 설치
http://ftp.gnome.org/pub/GNOME/binaries/win32/gtkmm/에서 원하는 버전 다운로드
저 같은 경우 데비안 lenny를 사용하고 있는데 2.12버전이 저장소에 있어서 그것을 사용하는 관계로
MS윈도우에서도 gtkmm 2.12 버전 설치하기로 결정하고 gtkmm-win32-devel-2.12.7-3.exe 설치
설치중 일관성을 위해 설치 폴더를 C:\_GNU_\gtkmm 로 변경했습니다.
참고:
http://live.gnome.org/gtkmm/MSWindows
5)EmacsW32 설치
http://ourcomments.org/cgi-bin/emacsw32-dl-latest.pl에서 Emacs-23-CvsP080909-EmacsW32-1.58.exe 설치
환경변수에 C:\Program Files\Emacs\emacs\bin 추가
MSYS에서 cedet 패키지 make 할 때 필요
환경변수에 C:\Program Files\Emacs\EmacsW32\gnuwin32\bin 추가 (이것은 꼭! 앞부분에 추가)
Warning (w32shell): When using 'msys' program 'locate' can't be found 방지와 grep-find 문제 해결하기 위해
EmacsClient 바로가기(Shortcut) 속성에서 시작위치(Start in)를 %USERPROFILE% 로 변경하시면
처음 C-x C-f 했을때 C:\Documents and Settings\자신의 계정\ 이 기본값이 됩니다.
(원하시는 값으로 변경하세요.)
저같은 경우 EmacsClient(emacsclientw) 보단
C:\Program Files\Emacs\emacs\bin\runemacs.exe가 더 편해서 바로가기 하나 만들어서
C:\Documents and Settings\All Users\Start Menu\Programs\GNU Emacs 에 추가해서 사용했습니다.
(emacsclient경우 여러번 실행해도 프로세스가 1개이고 runemacs는 실행할때 마다 새로운 프로세스가 생깁니다.)
i)쉘을 MSYS로 변경
M-x customize-group
w32shellW32shell Msys Bin: 값에 C:/_GNU_/msys/1.0/bin 적어 넣음
state 버튼 누르고 Save for Future Sessions
W32shell Shell: Value Menu 누르고 MSYS로 변경
state 버튼 누르고 Save for Future Sessions
ii)grep-find(find-grep) 문제 해결
M-x grep-find 하면
grep -r <C> -nH -e . --include=
/bin/sh: C: No such file or directory
Grep finished with no matches found at 날짜또는
find . -type f -exec grep -nH -e {} NUL ;
find: missing argument to `-exec'
Grep finished with no matches found at 날짜또는
find . -type f -print0 | xargs -0 -e grep -nH -e
grep: unrecognized option `--color=auto'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
Grep exited abnormally with code 123 at 날짜이런 식으로 메세지가 나오고 안되었습니다.
그래서 제가 쓴 해결 방법은 위 환경변수 설정에서 꼭 앞부분에 추가하라고 한 것 앞부분에 추가하고
M-x customize-group
grepGrep Highlight Matches: Value Menu 버튼 누르고 "Not Set"로 변경
state 버튼 누르고 Save for Future Sessions
Grep Find Use Grep R: Toggle 버튼 누르고 "off (nil)"로 변경
state 버튼 누르고 Save for Future Sessions
이렇게 했습니다.
위 설정을 한 후 grep-find를 다시 해보면 리눅스에서 처럼
Run find(like this): find . -type f -print0 | xargs -0 -e grep -nH "검색어"이렇게 나오고 정상적으로 명령이 수행됩니다.
6).emacs 파일 설정
저같은 경우
~/.emacs 파일에는 되도록 emacs 자체(customize-browse, customize-group 등을 이용해서)에서 설정한 것만 들어가고
~/.emacs.d/_manual-setting_.el 에 매뉴얼 설정을 하여 따로 분리 하였습니다.
궁금하신분은 첨부파일(emacsw32settings.zip) 참고하세요.
(customize-browse에서 제가 못 찾는 것인지... 암튼 안나타나는 것이 있었습니다.
그런 것은 customize-group을 이용하거나 수동설정을 하였습니다.)
그리고 보통 emacs 자체 설정 기능을 한 번 사용하면 .emacs 파일이 자동으로 생성되지만
수동으로 생성하길 원하시는 분은 C:\Documents and Settings\자신의 계정\Application Data 폴더에 생성하시면 됩니다.
MS윈도우 탐색기에서는 .emacs 파일 생성이 안되니 "_emacs" 로 파일명을 만드시거나 MSYS나 emacs 내부에서 생성하세요.
.emacs.d 폴더도 같은 원리입니다.
또한 설정파일 내부에서 ~/ 와 C:\Documents and Settings\자신의 계정\Application Data 는 같은 것입니다.
7)emacs-goodies-el 설치
제가 데비안에서 사용하는 highlight-current-line, shell-command, folding-mode, tabbar-mode, bar-cursor-mode 등등을
일일히 설치하는 것은 너무 귀찮은 일인 것 같아 그냥 데비안 패키지 다운로드해서 해제후 사용하기로 했습니다.
그리고 패키지로 된 것 보다
http://alioth.debian.org/projects/pkg-goodies-el/ 를 참고해서
MSYS 안에서 cvs 명령어로 최신 버전을 직접다운로드 하는 것이 최상의 방법이라 생각되나 테스트이기도 하고 귀찮은 관계로(^^;)
http://packages.debian.org/lenny/emacs-goodies-el에서 emacs-goodies-el_29.3.orig.tar.gz 다운로드
압축해제후
emacs-goodies-el 폴더를 C:\Documents and Settings\자신의 계정\Application Data\.emacs.d\emacs-goodies-el 로 복사
.emacs 설정에서 (highlight-current-line)함수 때문에 문제가 생기기 때문에 (custom-set-variables) 보다 앞 쪽에서
(add-to-list 'load-path "~/.emacs.d/emacs-goodies-el")
(load "emacs-goodies-el")
(custom-set-variables ........이런 식으로 추가하세요.
8)doxymacs 설치
http://doxymacs.sourceforge.net/
http://sourceforge.net/project/showfiles.php?group_id=23584에서 doxymacs-1.8.0.tar.gz 다운로드
압축해제후
no-autoconf 폴더를 C:\Documents and Settings\자신의 계정\Application Data\.emacs.d\doxymacs 로 복사
.emacs 파일에 아래 추가
(add-to-list 'load-path "~/.emacs.d/doxymacs")
(require 'doxymacs)9)cedet 설치
http://cedet.sourceforge.net/
1.0pre4 버전에서 C++ namespace를 쓸 경우 자식클래스에서 부모클래스 멤버가 자동완성에 안나타나는 문제가 있고
자동완성도 너무 느려서 cvs 버전을 설치하였습니다.
MSYS에서
cvs -d:pserver:anonymous@cedet.cvs.sourceforge.net:/cvsroot/cedet login
암호 물어보면 엔터
cvs -z3 -d:pserver:anonymous@cedet.cvs.sourceforge.net:/cvsroot/cedet co -P cedet탐색기로 C:\Documents and Settings\자신의 계정\Application Data\.emacs.d\cedet-cvs 로 옮기고 MSYS에서 make 실행
주의사항으로 5번에서 환경변수 경로에 C:\Program Files\Emacs\emacs\bin 이 제대로 들어가 있는지 확인하시고
혹시 "you can use touch to update the Makefile time stamp." 메세지가 나오면
$ find . -name Makefile -exec touch {} \;
$ make해주세요.
만약 그래도 컴파일 단계에서 에러가 나면 아래처럼 해보세요.
$ find . -name Makefile -exec touch {} \;
$ make clean-autoloads
$ make clean
$ make그리고 cedet 기능을 emacs 시작할 때 불러들여야 하는데
저 같은 경우 "~/.emacs.d/cedet-cvs.el" 파일에 관련 설정을 집어넣고
(load "~/.emacs.d/cedet-cvs") 이런식으로 .emacs 설정파일(_manual-setting_.el)에 포함시켰습니다.
참고사항으로 자동완성 (semantic-ia-complete-symbol-menu) 창이 C-g 로 사라지지 않는데
ESC 나 특이하게 왼쪽 Alt 키를 누르니깐 사라지더군요.
그리고 자동완성이 안되고
semantic-analyze-possible-completions-default:
Cannot find types for `"..."'
이런 에러가 나온다면
.emacs 파일에서 (semantic-add-system-include) 함수로 헤더파일 경로를 잘 설정했는지 확인하고
C-x C-s (save-buffer)
M-x revert-buffer이렇게 해보세요.
저 같은 경우 아래 사이트를 참고해서
http://www.stokebloke.com/wordpress/2008/04/17/emacs-refresh-f5-key/
위처럼 하는 대신
(defun refresh-file-after-save-buffer ()
"refresh file after save buffer"
(interactive)
(save-buffer)
(revert-buffer t t t) )
(global-set-key [(control c)(control R)] 'refresh-file-after-save-buffer)이렇게 .emacs 에 넣고 사용합니다.
10)ecb 설치
http://ecb.sourceforge.net/
저같은 경우 리눅스에서 snapshot 버전을 사용하는 관계로 MS윈도우에서도 Latest CVS-shapshot 버전을 설치했습니다.
~/.emacs.d/ecb-snap/ 에 압축풀어서 복사
~/.emacs.d/ecb-snap/Makefile 파일에서
CEDET=c:/Programme/emacs-21/site-lisp/package-development/cedet
이렇게
CEDET=~/.emacs.d/cedet-cvs수정후 make 명령 실행(emacs 내부에서... 그렇지 않은 경우 c:\ 포함한 전체 경로를 적어줘야 하지 않을까 생각.....)
그리고 ecb 기능을 emacs 시작할 때 불러들이기 위해
"~/.emacs.d/ecb-snap.el" 파일에 관련 설정을 집어넣고
(load "~/.emacs.d/ecb-snap") 이런식으로 .emacs 설정파일(_manual-setting_.el)에 포함시켰습니다.
11) yasnippet 설치
http://code.google.com/p/yasnippet/
위의 cedet,ecb 처럼 설치
12)javascript-mode, expand-member-functions 설치
http://www.emacswiki.org/cgi-bin/wiki/JavaScriptMode
http://www.brgeight.se/downloads/emacs/javascript.el
http://wiki.kldp.org/wiki.php/EmacsExpandMemberFunctions
http://www.emacswiki.org/cgi-bin/wiki/ExpandMemberFunctions
13) Gtkmm(C++) 예제작성하며 테스트 해보기
탐색기에서 컴파일된 Gtkmm 프로그램 실행시 Console 창 안보이게 하는 방법은
-mwindows 옵션을 주어서 컴파일하시면 됩니다.
주의 사항:
msys에 쓰이는 파일은 LF으로만 끝나도록 하세요.
\, / 사용에 주의하세요.
의문점:
가끔 종료할때 fatal error 라고 뜨던데 MS윈도우를 클린설치 하고 emacs만 딱 설치하고 사용하니
아직까지 아무런 문제가 안생기더군요.
이유를 모르겠습니다. ^^;
| 첨부 파일 | 파일 크기 |
|---|---|
| emacsw32gtkmm.png | 46.66 KB |
| emacsw32settings.zip | 118.92 KB |
- 인쇄에 적합한 버전
- Login or register to post comments
- 4903번 읽힘


points
당신이 바로 챔피언입니다.
좋은 자료 감사합니다.
------------------------------
How many legs does a dog have?
points
와우
정말로 수고하셨습니다.
노고에 감사드립니다.
이렇게 해 주시기가 쉽지 않은데 말이죠
저도 바로 스크랩을 해 두어야 겠습니다.
yasnippet를 사용중이신것 같은데
gtkmm관련 snippet이 있으시면 부탁좀 드려도 될까요?
---------------------------------------------
svn + trac + my project --> success ???
---------------------------------------------
points
특별히 쓰는 것은 없습니다.
gtkmm도 c++로 만들어져 있기 때문에 yasnippet에 있는 c++-mode용 기능 외에는
특별히 쓰는 것은 없습니다.
참고로 emacs 메뉴에 보시면 YASnippet 메뉴 항목이 있는데
각 모드 별로 키워드가 나와있습니다.
메뉴에서 선택하셔도 되지만 보통은 메뉴 항목 오른쪽 끝에 나와있는
키워드 치고 tab 누르시면 기능이 작동합니다.
points
좋은 자료 감사합니다.
인터넷에 나돌던 영문자료로 검색해서 하나하나 설치 했던 것을 저렇게 정리해서 보고 나니 깔끔하네요 :)
points
감사합니다.
쭉 따라하다가
9)cedet 설치 부분 make 실행시 에러가 나더군요.
semantic-grammar-wy.el:512:31:Error: End of file during parsing
와 같은 에러 였습니다.
semantic-grammar-wy.el 파일의 줄바꿈 타입을 unix 식으로 바꿔서 저장하고 나니 해결되었습니다.
혹시 저와 같은 문제를 겪는 분이 계실까 해서 글 남겨봅니다.
points
멋지게
멋지게 정리하셨네요. 정말 고생하셨습니다.
時日也放聲大哭
points
오오~ emacs 맨땅에
오오~
emacs 맨땅에 시작하기 암울했었는데.
도전의 벽이 상당히 낮아졌네요~
-----------------
한글을 사랑합니다.
points
완벽합니다.
진짜 도움 많이됐습니다.
감사합니다 ~
points
wiki쪽에 emacs 자동완성쪽 글을 정리해 주신 분이시군요. :)
좋은 자료 잘 봤습니다.
그런데, wiki 쪽에 올리신 스크린샷에 보면, toolbar 의 icon이 기본이 아닌것 같던데, 어떻게 바꿀 수 있나요?
그리고 wiki 쪽에는 ECB쪽 설치 설명이 빠진듯 싶네요. 아래에는 ecb를 활용하는 예제는 들어있는데 말이죠.
points
그건...
툴바 아이콘은 gnome-icon-theme-gartoon 패키지이고 데비안 저장소에 있습니다.
MS윈도우에서는 글쎄요.
MS윈도우에서 gtk 테마 적용이 가능 할 것도 같은데... 다른 고수님께 패스.....^^;
그리고 주제가 자동완성이여서 ECB는 소개만 했습니다. ^^