2011-02-16 30 views
3

我正在使用Emacs作为我的编程环境的第一步。我使用emacs -nw在DOS提示符下运行它,并在那里进行开发。这真是令人难以置信,我可以使用Emacs和它的Eshell/Shell来编写J2EE和J2ME。我可以从命令行编译和编译所有类型的Visual Studio应用程序吗?

现在关于将它用于Visual Studio开发。 目前,我正在使用Visual C++ .NET 2008开发一个简单的OpenGL应用程序。 我还没有尝试从命令行构建该应用程序,这有可能吗?

如果在J2EE和J2ME中,我们有build.xml(这是一个ant构建文件),但Visual Studio.NET解决方案中的模拟器是什么?

我已经使用命令行编译了一个简单的Visual Studio控制台程序。它的工作原理,但一套完整的项目呢?

谢谢!

回答

2

大量的评论:

  1. 有没有必要为你使用-nw; Emacs可以正常使用Windows。

  2. build.xml的模拟结果为xxxxxx.sln,与相关的项目文件zzzzzzz.csproj结合使用。当然,用您的解决方案和项目名称替换xxxx和zzzzz。

  3. 你不需要eshell或shell来编译。您可以使用M-x compile在emacs中运行编译,该编译通常绑定到一个组合键以便于访问。我是C-xC-e,但我不知道这是一个广泛的惯例还是我的选择。

  4. next-error函数可以正常工作,将点移动到编译器输出中报告的下一个错误。你可能需要一个正则表达式来处理错误字符串。我用这个:

    (添加到列表 '编译错误,正则表达式,ALIST-ALIST '(MSVC“^ [\ t] \([A-ZA-Z0-9 \] [^ (] \。(cpp \ | c \ | h \)\)(\([0-9] + \))*:+ \(error \ | fatal error \ | warning \)C [0-9 ] +:” 1 3)))

当已经有一个MSVC的条目,您可能需要

(let ((msvcentry (assoc 'msvc compilation-error-regexp-alist-alist))) 
    (when msvcentry 
    (setcdr msvcentry '(msvc ....))))) 
  1. CEDET。我没有任何在Windows上使用CEDET和C++的经验,但许多人在其他环境中使用CEDET和C++,用于代码完成,代码分析等等。
+0

是的,Emacs的Win32 GUI版本运行得很好,但我更喜欢(当然这是一个主观问题)`emacs -nw`,因为imho,它非常轻。我的第一个编码是在Dos Prompt的GW Basic中 - 在ROM中被精简 - 所以很高兴知道在我的专业工作时代,我可以在DOS Prompt中再次执行,而不是在花哨的GUI。我会试一试这两个答案,这对我来说似乎非常重要。谢谢 – swdev 2011-02-17 01:25:01

5

您在您的服务的几个命令行工具:

  • msbuild.sln文件(就像蚂蚁的build.xml文件)
  • nmake这是基于旧的构建系统构建项目在Makefile文件
  • cl.exelink.exe

所有你需要做的是启动visual-studio-commandline提示符或将提示符的环境合并到你自己的shell/powershell/emacs-environment中。看看vcvars32.bat文件及其功能,它位于visual2008的安装文件夹中的某处。

你也可以使用其他构建系统(sconscmake等),这要么是独立的(scons的),或者为你的编译器原生buildscripts(cmake的,会造成你的情况.sln)。

编译(和链接)一个简单的二进制文件,使用OpenGL,你可以这样做:

% cl /nologo opengl.cpp /link OpenGL32.lib GLu32.lib and GLaux.lib 

看看一个nehe-tutorial

+0

我知道的唯一工具就是cl.exe。我认为Msbuild是我的目的。我应该尝试一下。感谢OpenGl的东西! – swdev 2011-02-17 01:22:07

2

在另一个回答这个问题,@akira said

所有你需要做的就是推出视觉工作室命令行提示符 OR纳入该提示的环境到自己的外壳/ PowerShell中/ emacs的环境。看看 vcvars32.bat文件和它做什么;它位于visual2008的安装文件夹中的某处。

考虑这一建议,我已经创建了一个的Emacs Lisp文件建立我在Emacs环境为Visual Studio 2010中创建这个文件,我第一次捕捉到从一个普通的命令提示符环境设置,然后做了同样的从Visual Studio命令提示符:

set > set_ordinary.txt 
set > set_vs2010.txt 

然后,我发现使用file differencing tool for Windows两者之间的差异。以下emacs lisp代码是我努力的结果。只需将其内容复制到您的的.emacs文件,或更好的,它的内容保存到vcvars32-2010.el并将其放置在你的load-path

;;; vcvars32-2010.el --- Create Visual Studio Command Prompt (2010) environment settings 

;; Environment settings for: 
;; Visual Studio 2010 Professional 
;; Version 10.0.40219.1 SP1Rel 
;; 
;; Microsoft .NET Framework 
;; Version 4.5.50938 SP1Rel 

;; Reference: 
;; C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\vcvarsall.bat 
;; -and- 
;; C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\bin\\vcvars32.bat 

;;; Usage: 

;; Place this file somewhere in your `load-path' and add the following line 
;; to your `.emacs' file: 
;; 
;; (load "vcvars32-2010.el") 

;;; Code: 

(setenv "CommonProgramFiles" "C:\\Program Files\\Common Files") 
(setenv "DevEnvDir" "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE\\") 

(setenv "Framework35Version" "v3.5") 
(setenv "FrameworkDir" "C:\\Windows\\Microsoft.NET\\Framework\\") 
(setenv "FrameworkDIR32" "C:\\Windows\\Microsoft.NET\\Framework\\") 
(setenv "FrameworkVersion" "v4.0.30319") 
(setenv "FrameworkVersion32" "v4.0.30319") 

(setenv "INCLUDE" 
     (concat 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\INCLUDE;" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\INCLUDE;" 
     "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\include;")) 

(setenv "LIB" 
     (concat 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\LIB;" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\LIB;" 
     "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\lib;")) 

(setenv "LIBPATH" 
     (concat 
     "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;" 
     "C:\\Windows\\Microsoft.NET\\Framework\\v3.5;" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\LIB;" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\LIB;")) 

(setenv "Path" 
     (concat 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VSTSDB\\Deploy;" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE\\;" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\BIN;" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\Tools;" 
     "C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319;" 
     "C:\\Windows\\Microsoft.NET\\Framework\\v3.5;" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\VCPackages;" 
     "C:\\Program Files (x86)\\HTML Help Workshop;" 
     "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\bin\\NETFX 4.0 Tools;" 
     "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\bin;" 
     (getenv "Path"))) 

(setenv "PROCESSOR_ARCHITECTURE" "AMD64") 
(setenv "ProgramFiles" "C:\\Program Files") 

(setenv "VCINSTALLDIR" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\") 

(setenv "VSINSTALLDIR" 
     "C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\") 

(setenv "WindowsSdkDir" 
     "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\") 

;;; vcvars32-2010.el ends here