2011-04-06 11 views
6

Estoy intentando configurar Vim para el compilador VS (expreso) C del usuario cl.exe. Añadiendo¿Cómo compilo los programas C usando el comando 'make' de Vim con el compilador de Visual Studio en Windows 7?

set makrprg='c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cl.exe' 

(He intentado escapar con \\, \\\, \\\\ sólo para estar seguro) a mi archivo _vimrc e invocando :make % devuelve lo siguiente:

:! myfile.c >C:\Users\gvkv\AppData\Local\Temp\VIe7BF5.tmp 2>&1 

y las cargas myfile.c en el IDE de VS ! Incluso si cl.exe necesita su entorno:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat 

esto es todavía extraña y no tengo ni idea de cómo proceder.

+0

En lugar de escapar de las barras diagonales inversas, intente voltear las barras en la otra dirección (Windows puede manejar esto). Además, la mayoría de los programas Make tienen opciones de depuración; estos pueden ser útiles para rastrear problemas. – jdigital

Respuesta

3

Creo que el problema con su declaración makeprg se debe principalmente a los espacios en la ruta. Cmd.exe requiere comillas dobles en los espacios. En primer lugar, el uso escapó comillas alrededor de la ruta (\ "). A continuación escapar de todas las barras inclinadas invertidas (\). Por último, escape todos los espacios (\).

set makrprg=\"c:\\Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\ 10.0\\VC\\bin\\cl.exe\" 

Alternativamente, usted puede configurar su PATH adecuada y acaba de establecer makeprg a cl.exe directamente.

3

he creado un archivo MAKE donde tuve como objetivo:

VCPROJ = /path/to/MyProject.vcproj 

all: 
    "c:\Program Files\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" /nocolor /r $(VCPROJ) Debug 

.PHONY: all 

tuve make en el camino de vim para no tener que modificar makeprg.

De esta manera VS compiló normalmente todo el proyecto y vim analizó los errores.

5

solución juez de Maygarden es correcta hasta el escape adecuada y resuelto el problema Vim que tenía, pero había un par de otras cuestiones que tenía que resolver para que todo funcione En particular,

  1. cl.exe requiere el entorno correcto así como la ruta correcta; es decir, agregar C:\my\path\to\cl no es suficiente. De lo contrario, obtendrá errores que informan sobre la falta de DLL s. La solución es ejecutar vcvars32.bat (o cualquier otro archivo por lotes que configure un entorno similar) y cl como un único comando.

  2. cmd requiere ninguna ruta con espacios a doble citados pero no se puede escapar de ellos con \ PORQUE :! ... trata \ literalmente; en su lugar, debe duplicar la comilla doble, ""....

Así que, para completar, pensé en publicar mi solución real.En Vim (o _vimrc):

:set makeprg=\"\"Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\ 10.0\\VC\\bin\\vcvars32.bat\"\&\&cl\" 

y luego sólo tiene que llamar

:make % 

y ya está.

Este método se puede generalizar fácilmente para cualquier compilador. Además, como sugiere la respuesta de devemouse, la creación de un archivo MAKE para nmake es probablemente la mejor manera de hacer cosas para cualquier proyecto de tamaño no trivial (quería una solución Vim-only que se adapte a mi trabajo actual).

Cuestiones relacionadas