2011-02-16 68 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 
相關問題