Microsoft Visual Studio 2010 не помещает инструменты сборки в PATH для чистой цели?

Я настроил Microsoft Visual Studio для использования типа конфигурации Makefile, и я написал make-файл для построения моего проекта с использованием инструментов Microsoft. В разделе NMake конфигурации проекта я установил командную строку для сборки в build.bat, который представляет собой файл, который просто вызывает nmake с моим make-файлом в качестве аргумента командной строки, например, так:

nmake /nologo /f makefile.x86.winnt.msvc2010

Это работает просто отлично.

Для очистки я написал цель в своем make-файле, который удаляет все артефакты сборки. Это выглядит так:

#... the rest of the makefile
clean:
@erase /f /q $(OBJS) $(OUT) $(MAPFILE) $(PDBFILE)
@echo + clean

Поэтому я установил команду clean в качестве вызова nmake с аргументом clean в качестве аргумента. Как это:

nmake /nologo /f makefile.x86.winnt.msvc2010 clean

Я поместил этот текст в clean.bat и установил его как «Чистая командная строка», но он не работает, потому что вызывающая оболочка не может найти nmake. Я проверил путь во время чистого вызова, и MSVS не включает в него инструменты сборки (включая nmake) для очистки. (Обратите внимание, что выполнение вышеуказанной команды nmake завершается успешно из оболочки, имеющей nmake в PATH).

Как я могу заставить MSVS включать инструменты сборки в PATH, чтобы я мог вызвать nmake в чистой командной строке? Или есть лучшее решение?

4

Решение

Цитируя из Visual Studio Express Readme:

2. Известные проблемы

2,4. Проблемы с продуктом

2.4.1. Общие вопросы (продукт)

2.4.1.14. Чистое решение не работает для типа конфигурации: Makefile (2010 RC)

Выполнение «Чистого решения» для решения nmake сообщает о следующем
ошибка:

1>------ Clean started: Project: makefiletest, Configuration: Debug Win32 ------
1>  'nmake' is not recognized as an internal or external command,
1>  operable program or batch file.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.MakeFile.Targets(33,5):
error MSB3073: The command "nmake /?" exited with code 9009.
================= Clean: 0 succeeded, 1 failed, 0 skipped ==========

Чтобы решить эту проблему:

  1. Откройте окно командной строки Visual Studio.
  2. Откройте Devenv, набрав devenv /useenv,
  3. Теперь «Чистое решение» должно работать.

Или же:

Передайте командный файл чистой команде. В командном файле настройте
ПУТЬ к инструменту nmake, а также к другой среде сборки.

4

Другие решения

Конечно, вы правы, MSVC никогда не ставит свои инструменты сборки на путь! Итак, у вас есть два варианта здесь:

  • Запустите пакетный файл из командной строки VisualStudio

  • добавлять %ProgramFiles%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat для начала вашего командного файла, чтобы добавить требуемый путь к PATH.

3

Я думаю, что лучшее решение это добавить set PATH=$(VSInstallDir)\BC\bin;%PATH% в начало вашего командного файла.

Это должно обеспечить сборку в будущем, если в будущем вы обновитесь до VS2012 (или выше).

0
По вопросам рекламы [email protected]