emacs에서 컴파일

rainmon의 이미지

emacs에서 Visual Studio .NET 2003 의 c++ 컴파일러를 쓰고 싶은데 설정을 어떻게 해야하죠?
프로젝트나 솔루션을 컴파일하려는게 아니고 간단한 예제들이나 컴파일 하려고 합니다. 그리고 컴파일 단축키도 좀.. 지금은 마우스로 풀다운 메뉴에 명령을 클릭해서 쓰는데 불편하네요. :oops:

fox9의 이미지

Visual Studio .net 은 안 써봐서 모르겠지만 명령행 컴파일러가 있지 않나요?
Visual C++ 6.0의 경우는 cl.exe 가 있습니다.

아니면 Visual Studio .net에 emacs를 넣어서 사용하시는 것은 어떠실런지요?

http://www.emacswiki.org/cgi-bin/wiki/VisEmacs

rainmon의 이미지

fox9 wrote:
Visual Studio .net 은 안 써봐서 모르겠지만 명령행 컴파일러가 있지 않나요?
Visual C++ 6.0의 경우는 cl.exe 가 있습니다.

아니면 Visual Studio .net에 emacs를 넣어서 사용하시는 것은 어떠실런지요?

http://www.emacswiki.org/cgi-bin/wiki/VisEmacs


Visual Studio .NET 2003의 도구중의 하나인 도스명령창에서는 잘되는데
emacs내에서 불러다 쓰려고 cl의 경로를 잡아줬는데 역시 안되네요.
환경설정이 부족한듯하고.. 할수있는 방법이 있을듯한데 모르겠네요. ㅠ_ㅠ
kane의 이미지

그냥 아이디어만 내보면..
Makefile을 작성해서 사용하면 괜찮을 것 같네요.
cl에 이것저것 붙을 옵션을 챙기는게 제일 문젤텐데..
VS도 nmake인가하는 형식으로 설정 떨궈주는게 있었던 것 같으니 잘~ 찾아보심이...
(결국 별 도움 안되는 얘기만... -_-)

cinsk의 이미지

rainmon wrote:
emacs에서 Visual Studio .NET 2003 의 c++ 컴파일러를 쓰고 싶은데 설정을 어떻게 해야하죠?

Emacs에서 따로 설정이 필요한 부분이 아닙니다. Visual Studio의 C++ command line compiler가 제대로 설정이 되어 있는지 확인 바랍니다. 참고로 Visual Studio 6.0에서는 command-line compiler가 cl.exe이고, 이 것을 쓰기 위해서는 VC98\bin\vcbars32.bat를 실행해야 합니다. (.net은 잘 모르겠군요.)

Quote:

그리고 컴파일 단축키도 좀.. 지금은 마우스로 풀다운 메뉴에 명령을 클릭해서 쓰는데 불편하네요. :oops:

컴파일 명령은 원래 M-x compile<RET>입니다. 하지만 사용자가 얼마든지 단축키를 만들 수 있습니다. .emacs 파일 또는 *scratch* 버퍼에서 다음 명령을 입력하고 실행하면 됩니다. (*scratch* buffer에서 실행할 때는, 커서를 맨 뒤에 위치시키고 C-j를 누르면 됨)

(global-set-key [(f5)] 'compile)

참고로 C-c c로 단축키를 만들고 싶다면 [(f5)] 대신 [(control c) ?c]를 쓰면 됩니다. 마찬가지로 C-c C-d로 하고 싶다면 [(control c) (control d)]를 쓰면 됩니다.

개인적으로, C/C++ 파일을 편집할 때 쓰고 있는 단축키는 다음과 같습니다:

;; C-c c      M-x compile
(global-set-key [(control c) ?c] 'compile)
;; C-c d      M-x shell
(global-set-key [(control c) ?d] 'shell)
;; C-c C-l     M-x goto-line
(global-set-key [(control c) (control l)] 'goto-line)
;; C-c C-i      M-x indent-region
(global-set-key [(control c) (control i)] 'indent-region)
(require 'cc-mode)
;; M-{      M-x c-beginning-of-defun 
(define-key c-mode-base-map [(meta ?{)] 'c-beginning-of-defun)
;; M-}     M-x c-end-of-defun
(define-key c-mode-base-map [(meta ?})] 'c-end-of-defun)

각 명령이 의미하는 바는 도움말을 참고하기 바랍니다.

익명 사용자의 이미지

저는 M-x compile 이 실행될때 디렉토리를 뒤져서 *.sln 파일이 있으면 msvc 로 빌드하고
없으면 make 를 실행하도록 해뒀습니다. nmake 를 써볼까도 생각했는데 IDE 만 쓰는 분들과
코드 공유도 좀 곤란하고 nmake 자체도 골때리더군요...

devenv.com /build debug foobar.sln

식으로 실행되도록 코드를 작성하시면 됩니다. 2003 에서만 되고 그외버전에서는 커맨드라인
빌드방법이 아마 달라질겁니다.

http://www.pie.pe.kr/cgi-bin/moin.cgi/MSVC%ec%99%80%ea%b0%99%ec%9d%b4%ec%93%b0%ea%b8%b0

에 보시면 제가 만들었던 elisp 코드가 있는데 elisp 을 잘 모르는 상태에서 만든거라 좀 추하네요

익명 사용자의 이미지

rainmon wrote:
프로젝트나 솔루션을 컴파일하려는게 아니고 간단한 예제들이나 컴파일 하려고 합니다.

이크.. 제가 이말을 못보고 엉뚱한내용을 썼네요.. :oops:

rainmon의 이미지

여러가지로 도움되는 말씀들을 올려주셔서 감사합니다.
컴파일은 아직 깔끔하게 해결못했지만 제가 나름대로 방법을 찾아보고 올라온 글들도 참고해보니 현재상황도 그렇고 차후로도 make파일을 만들어 두는게 좋을듯 하네요.
그래서 여기저기 살펴봐서 짜집기로 하나 만들어봤는데 아는게 부족해서 자꾸 막히네요.
한번 살펴보시고 조금씩 고쳐봤으면 합니다.

# 작성할때 탭과 스페이스 한칸을 사용했습니다.
PROGRAM = test.exe

all: $(PROGRAM)

CPPSRCS =

CSRCS = \
	test.c

LIBS = \
	kernel32.lib \
	user32.lib \
	gdi32.lib \
	winspool.lib \
	comdlg32.lib \
	advapi32.lib \
	shell32.lib \
	ole32.lib \
	oleaut32.lib \
	uuid.lib \
	odbc32.lib \
	odbccp32.lib


inc32 = "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include"
cc32 = "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\cl.exe"
link32 = "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin\link.exe"

linkflags = /OUT:"Debug/test.exe" /INCREMENTAL /NOLOGO /DEBUG /PDB:"Debug/test.pdb" /SUBSYSTEM:CONSOLE /MACHINE:X86

LIB = "C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib"

INCLUDE = -I $(inc32) -I .
CPPFLAGS = /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Gm /EHsc /RTC1 /MLd /Fo"Debug/" /Fd"Debug/vc70.pdb" /W3 /c /Wp64 /ZI /TC

OBJS = $(CPPSRCS:.cpp=.obj) $(CSRCS:.c=.obj)

$(PROGRAM): $(OBJS)
	$(link32) -out:$@ $(OBJS) $(LIBS) $(linkflags)

.c.obj:
	$(cc32) $(CPPFLAGS) $(INCLUDE) $*.c

.cpp.obj:
	$(cc32) $(CPPFLAGS) $(INCLUDE) $*.cpp

clean:
	del $(PROGRAM) *.obj Debug\*.obj

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.