我正处于使用Emacs作为编程环境的第一步。我使用emacs -nw
在DOS提示符下运行它并在那里进行开发。令人难以置信的是,我可以使用Emacs及其Eshell / Shell对J2EE和J2ME进行编码。
现在关于将它用于Visual Studio开发。 目前,我正在使用Visual C ++ .NET 2008在一个简单的OpenGL应用程序中工作。 我没有尝试从命令行构建该应用程序,是否可能?
如果在J2EE和J2ME中,我们有build.xml(这是一个ant构建文件),但Visual Studio.NET解决方案中的类似物是什么?
我已经使用命令行编译了一个简单的Visual Studio Console程序。它有效,但是一套完整的项目呢?
谢谢!
答案 0 :(得分:5)
您的服务中有几个命令行工具:
.sln
文件构建项目(类似于ant的build.xml文件)nmake
这是一个基于Makefile
文件的旧版构建系统cl.exe
和link.exe
您需要做的就是启动visual-studio-commandline提示符或将该提示符的环境包含在您自己的shell / powershell / emacs环境中。查看vcvars32.bat
文件及其功能,它位于visual2008的安装文件夹中的某个位置。
您还可以使用其他构建系统(scons,cmake等),这些系统可以是独立的(scons),也可以为您的编译器创建本机构建脚本(cmake,会在您的库中创建.sln
情况)。
编译(和链接)一个使用opengl的简单二进制文件,你可以这样做:
% cl /nologo opengl.cpp /link OpenGL32.lib GLu32.lib and GLaux.lib
答案 1 :(得分:2)
很多评论:
您无需使用-nw
; Emacs适用于Windows。
build.xml的模拟是xxxxxx.sln,与依赖项目文件(zzzzzzz.csproj)相结合。当然,用您的解决方案和项目名称替换xxxx和zzzzz。
您不需要eshell或shell进行编译。您可以使用M-x compile
从emacs中运行编译,C-xC-e
通常绑定到组合键以便于访问。我的是next-error
,但我不知道这是一个广泛的惯例,还是我的选择。
(let ((msvcentry (assoc 'msvc compilation-error-regexp-alist-alist )))
(when msvcentry
(setcdr msvcentry '(msvc ....)))))
函数可以正常移动指向编译器输出中报告的下一个错误。您可能需要一个正则表达式的错误字符串。我用这个:
(add-to-list'compilation-error-regexp-alist-alist '(msvc“^ [\ t] \([A-Za-z0-9 \。] [^(] \。\(cpp \ | c \ | h \)\)(\ ([0-9] + \))*:+ \(错误\ |致命错误\ |警告\)C [0-9] +:“1 3)))
如果已有msvc条目,则可能需要
{{1}}
答案 2 :(得分:2)
在这个问题的另一个答案中,@akira said:
您所要做的就是启动visual-studio-commandline提示符 OR 将该提示的环境合并到您自己的shell / powershell / emacs环境中。看看吧 vcvars32.bat 文件及其功能;它位于visual2008的安装文件夹中的某个位置。
考虑到这个建议,我创建了一个Emacs lisp文件,用于在Visual Studio 2010的Emacs中设置我的环境。要创建此文件,我首先从普通命令提示符捕获环境设置,然后从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