Как мне скомпилировать программы на C, используя команду make Vim с компилятором Visual Studio для Windows 7? - PullRequest
6 голосов
/ 06 апреля 2011

Я пытаюсь настроить Vim для пользователя VS (экспресс) C компилятор cl.exe.Добавление

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

(я пытался сбежать с \\, \\\, \\\\, просто чтобы быть уверенным) в мой файл _vimrc и вызов :make % возвращает следующее:

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

и загружает myfile.c в IDE VS!Даже если cl.exe нужна среда:

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

, это все еще странно, и я не знаю, как поступить.

Ответы [ 3 ]

5 голосов
/ 08 апреля 2011

Решение судьи Мейгардена правильное, вплоть до правильного побега, и я решил проблему с Vim, которая у меня была, но мне пришлось решить еще пару проблем, чтобы все заработало.В частности,

  1. cl.exe требует правильной среды и правильного пути;т.е. добавление C:\my\path\to\cl недостаточно.В противном случае вы получите сообщение об ошибке при отсутствии DLL s.Решение состоит в том, чтобы запустить vcvars32.bat (или любой другой пакетный файл, который устанавливает аналогичную среду) и cl в виде одной команды.

  2. cmd требуются любые пути с пробеламибыть в двойных кавычках, но вы не можете избежать их с \, потому что :! ... трактует \ буквально;вместо этого вы должны дважды заключить двойную кавычку, ""....

Итак, для полноты я подумал, что опубликую свое действительное решение.В Vim (или _vimrc):

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

, а затем вы можете просто позвонить

:make %

и все готово.

Этот метод легко обобщаетсядля любого компилятора.Кроме того, как следует из ответа devemouse, создание make-файла для nmake, вероятно, является наилучшим способом сделать что-то для любого нетривиального проекта (я хотел решение только для Vim, которое подходит для моей текущей работы).

3 голосов
/ 06 апреля 2011

Я считаю, что проблема с вашим оператором makeprg в основном из-за пробелов в пути. Cmd.exe требует двойных кавычек вокруг пробелов. Сначала используйте экранированные двойные кавычки вокруг пути (\ "). Затем экранируйте все обратные слэши (\). Наконец, экранируйте все пробелы (\).

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

В качестве альтернативы вы можете настроить PATH соответствующим образом и просто установить makeprg на cl.exe напрямую.

3 голосов
/ 06 апреля 2011

Я создал make-файл , где у меня была такая цель:

VCPROJ = /path/to/MyProject.vcproj

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

.PHONY: all

У меня было make в пути vim, поэтому не пришлось изменять makeprg.

Таким образом VS обычно компилирует весь проект и vim анализирует ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...