2

vcvarsall.batを実行し、ソースファイルを唯一の引数としてcl.exeを実行することで、コマンドラインからコンパイルできます。問題は、前述のバッチファイルを使用して最初に環境を設定せずにcl.exeを実行するだけで、「ライブラリが見つからない」ためにエラーが発生することです。

これに対するいくつかの回避策を想像することができます。たとえば、プロジェクトディレクトリにvcvarsall.batを含み、すべてのコンパイルを行うバッチファイルを作成します。しかし、それは非常に面倒で柔軟性のない解決策のように思えます。Unixの場合と同じように、VimからCまたはC++ファイルをコンパイルして実行できるようにしたいと思います。

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

ただし、 vcvarsall.batが環境に永続的に追加するパスの山を追加したくありません。質問をこれよりもうまく表現する方法がわかりません。VisualStudio2010C++コンパイラを使用できるようにVimを設定するにはどうすればよいですか?

4

3 に答える 3

4

Vim内から環境変数を更新できます。たとえば、PATHの先頭に「c:\foo」を追加するには:

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のバージョンとインストールディレクトリを考慮して、必要に応じて調整します。

私の場合、これを関数に入れます。:vcvarsVisualStudioで作業したいときに電話します。ただし、これらの変更を常に含めることができます。

于 2013-01-16T23:20:38.317 に答える
1

DavidRodríguez--dribeasによるコメントを拡張し、vcvarsall.batパラメーターを受け入れる方法を確認すると、ソースツリーに次のファイルがあると便利であることがわかりました。

vc.bat

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

必要に応じてMSVSのバージョンとプラットフォームを調整するか、必要に応じてそれらを追加のパラメーターにします。環境変数はMSVCインストーラーによって設定されます。%VS...COMNTOOLS%これにより、上記は実際のインストールパスに依存しなくなります。

これにより、次のように実行すること<command>で、適切なMSVC環境で任意のファイルを実行できます。

vc.bat <command>

パラメータなしで呼び出された場合、それ以上のコマンドを実行せずに、現在のシェルの環境を設定するだけです。

さらに一歩進めたい場合は、単一の(CMake構文)構成からUnix Makefile、MSVCソリューション、およびその他のいくつかのビルドファイルタイプを生成できるメタビルドシステムであるCMakeがあります。Windowsでサポートされているビルドファイルタイプの1つはNMakeMakefilesです...そしてWindowsではUnixnmake <target>とほぼ同じように処理します。make <target>

于 2015-07-17T11:50:10.797 に答える
-1

Visual Studio 2017 Communityでは、Mudのソリューションは機能しませんでした。パスは異なります。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>

于 2017-05-19T05:08:46.783 に答える