Я настроил 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 в чистой командной строке? Или есть лучшее решение?
Цитируя из 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 ==========
Чтобы решить эту проблему:
- Откройте окно командной строки Visual Studio.
- Откройте Devenv, набрав
devenv /useenv
,- Теперь «Чистое решение» должно работать.
Или же:
Передайте командный файл чистой команде. В командном файле настройте
ПУТЬ к инструменту nmake, а также к другой среде сборки.
Конечно, вы правы, MSVC никогда не ставит свои инструменты сборки на путь! Итак, у вас есть два варианта здесь:
Запустите пакетный файл из командной строки VisualStudio
добавлять %ProgramFiles%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat
для начала вашего командного файла, чтобы добавить требуемый путь к PATH.
Я думаю, что лучшее решение это добавить set PATH=$(VSInstallDir)\BC\bin;%PATH%
в начало вашего командного файла.
Это должно обеспечить сборку в будущем, если в будущем вы обновитесь до VS2012 (или выше).