Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用Vim';s';制作';使用Visual Studio';Windows 7上的编译器?_C_Vim_Windows 7 - Fatal编程技术网

C 如何使用Vim';s';制作';使用Visual Studio';Windows 7上的编译器?

C 如何使用Vim';s';制作';使用Visual Studio';Windows 7上的编译器?,c,vim,windows-7,C,Vim,Windows 7,我正在尝试将Vim设置为用户VS(express)C编译器cl.exe。添加 set makrprg='c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cl.exe' (我试着用\\,\\\,\\\\\\转义到我的\u vimrc文件,并调用:make%返回以下内容: :! myfile.c >C:\Users\gvkv\AppData\Local\Temp\VIe7BF5.tmp 2>&1 然后将my

我正在尝试将Vim设置为用户VS(express)C编译器
cl.exe
。添加

set makrprg='c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\cl.exe'
(我试着用
\\
\\\
\\\\\\
转义到我的
\u vimrc
文件,并调用
:make%
返回以下内容:

:! myfile.c >C:\Users\gvkv\AppData\Local\Temp\VIe7BF5.tmp 2>&1
然后将
myfile.c
加载到VS的IDE中!即使
cl.exe
需要它的环境:

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

这仍然很奇怪,我不知道如何继续。

我创建了一个makefile,在那里我有这样的目标:

VCPROJ = /path/to/MyProject.vcproj

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

.PHONY: all
我在vim的路径中有
make
,因此不必修改
makeprg


这样VS通常编译整个项目,vim解析错误。

我认为您的makeprg语句的问题主要是由于路径中的空格。Cmd.exe需要在空格周围加双引号。首先,在路径(\“”)周围使用转义双引号。接下来转义所有反斜杠(\)。最后,转义所有空格(\)


或者,你可以适当地设置你的路径,直接将makeprg设置为cl.exe。

梅园法官的解决方案在正确的转义之前是正确的,并解决了我遇到的Vim问题,但为了让事情顺利进行,我还必须解决一些其他问题。特别是

  • cl.exe
    需要正确的环境以及正确的路径;例如,将
    C:\my\path\to\cl
    添加到
    C:\my\path\to\cl
    是不够的。否则,您将收到关于缺少
    DLL
    s的错误报告。解决方案是运行
    vcvars32.bat
    (或设置类似环境的任何其他批处理文件)和
    cl
    作为单个命令

  • cmd
    要求对任何带空格的路径进行双引号,但不能使用
    \
    对其进行转义,因为
    :!…
    按字面意思处理
    \
    ;相反,必须双引号,
    “…

  • 因此,为了完整性,我想我应该发布我的实际解决方案

    然后你就可以打电话了

    :make %
    
    你完成了


    这种方法对于任何编译器都很容易推广。此外,正如devemouse的回答所表明的,为
    nmake
    创建一个makefile可能是为任何规模不大的项目做事情的最佳方式(我想要一个适合我当前工作的唯Vim的解决方案).

    不要逃避反斜杠,而是尝试将斜杠朝另一个方向翻转(Windows可以处理此问题)。此外,大多数程序都有调试选项;这些选项有助于跟踪问题。
    :set makeprg=\"\"Program\ Files\ (x86)\\Microsoft\ Visual\ Studio\ 10.0\\VC\\bin\\vcvars32.bat\"\&\&cl\"
    
    :make %