2013-01-16 116 views
2

我可以從命令行運行vcvarsall.bat,然後運行cl.exe與我的源文件作爲唯一參數進行編譯。問題是隻運行cl.exe沒有先使用上述批處理文件設置環境會導致由於「缺少庫」而導致的錯誤。如何設置Vim以使用Visual Studio 2010的C++編譯器進行編譯?

我可以爲此畫出幾個解決方法,例如在我的項目目錄中創建一個批處理文件,其中包括vcvarsall.bat並執行所有編譯。儘管如此,這似乎是一個非常麻煩和僵化的解決方案。我更希望能夠編譯像一個會在Unix上運行在Vim任何C或C++文件:

:nnorebind <F5> :! g++ %<CR> 

我不希望添加的路徑一堆vcvarsall.bat增加永久的環境。我不知道如何將我的問題說成比這更好:我如何設置Vim才能使用Visual Studio 2010 C++編譯器?

+0

你能編寫自己的腳本,調用vcvars加載變量,然後調用編譯器?或者,您可以運行vcvars並在shell中運行vim ... –

回答

3

您可以從Vim內更新環境變量。例如,添加 「C:\富」 到PATH的開始:

let $PATH='c:\\foo;'.$PATH 

我複製我的vcvars的相關部分* .bat文件到我的vimrc:

if !exists("visual_studio_paths_added") 
    let visual_studio_paths_added = 1 
    let $PATH="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\\v3.5;C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\VCPackages;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\bin;".$PATH 
    let $INCLUDE="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\INCLUDE;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\INCLUDE;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\include;".$INCLUDE 
    let $LIB="C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\LIB;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\LIB;C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\lib;".$LIB 
    let $LIBPATH="C:\\Windows\\Microsoft.NET\\Framework\\v3.5;C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\ATLMFC\\LIB;C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\LIB;".$LIBPATH 
endif 

爲適應根據您的Visual Studio版本和安裝目錄需要。

在我的情況下,我把它放在一個函數中。當我想使用Visual Studio時,我打電話給:vcvars。但是你可以只將這些改變包括在內。

+0

這些更改是否必須是Vim的全局變量,還是可以設置爲緩衝區到緩衝區? – Hubro

+0

他們改變了Vim進程的*環境,所以是的,它們是全局的。 – Mud

0

擴大由大衛·羅德里格斯的評論 - dribeas,看到如何vcvarsall.bat接受參數,我發現它有助於在我的源代碼樹以下文件:

vc.bat

call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" amd64 & %* 

調整MSVS版本和平臺,或者根據需要製作額外的參數。環境變量%VS...COMNTOOLS%由MSVC安裝程序設置,它使上述獨立於實際安裝路徑。

這讓我運行它運行在正確的MSVC環境的<command>

vc.bat <command> 

如果被不帶參數,它只是設置爲當前shell環境不執行任何進一步的命令。

如果你想多走一步,有CMake,超常構建系統,使您可以從一個單一的(CMake的語法)配置產生的Unix Makefile文件,MSVC解決方案等幾個類型的構建文件。 Windows上支持的構建文件類型之一是NMake Makefiles ...和nmake <target>在Windows上的處理方式與在Unix上的make <target>處理方式差不多。

0

Mud的解決方案在Visual Studio 2017社區中不適用於我。路徑是不同的。我認爲DevSolar使用vcvarsall.bat的方式更加可靠,因爲它可以讓VS處理正確的路徑。

因爲我不想隨身攜帶我的VIM配置.bat文件,我一直在尋找的解決方案就.vimrc裏裏面工作:

  1. 添加vcvarsall.bat到您的PATH。在我的情況下,c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
  2. 把在.vimrc以下由F8編譯當前文件

    nnoremap <F8> :!vcvarsall.bat && cl /EHsc % <CR>

相關問題