запуск сборки vs2008 из python - PullRequest
1 голос
/ 05 ноября 2008

Первый пакетный файл запускает командную строку, мне нужно, чтобы вторая команда была в ccontext первой. Как я могу сделать это в Python?

Как есть, он запускает пакет и блокирует его до конца (с контекстом командной строки), а затем выполняет devenv без необходимого контекста.

os.system(r'%comspec% /k ""C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"" x86')
os.system(r'devenv asdf.sln /rebuild Debug /Out last-build.txt')

Думайте об этом, как будто я в bash, и мне нужно выполнить команду в контексте perl, поэтому я набираю perl -c 'asdf'. выполнение perl и asdf вплотную не будет работать, мне нужно получить devenv внутри контекста perl.

Ответы [ 4 ]

3 голосов
/ 06 августа 2009

Я думаю, что правильным способом для достижения этой цели было бы выполнение этой команды:

%comspec% /C "%VCINSTALLDIR%\vcvarsall.bat" x86 && vcbuild "project.sln"

Ниже вы увидите версию Python той же команды:

os.system('%comspec% /C "%VCINSTALLDIR%\\vcvarsall.bat" x86 && vcbuild "project.sln"')

Это должно работать с любой Visual Studio, поэтому было бы неплохо отредактировать вопрос, чтобы сделать его более общим.

Я обнаружил небольшую проблему, связанную с расположением vcvarsall.bat - поскольку VCINSTALLDIR не всегда установлен, вы должны использовать записи реестра для определения местоположения, в котором находится установщик:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0]
"InstallDir"="c:\\Program Files\\Microsoft Visual Studio 9.0\\Common7\\IDE\\"

Добавьте ..\..\VC\vcvarsall.bat к этому пути. Также рекомендуется проверить другие версии Visual Studio.

2 голосов
/ 05 ноября 2008

В этих ситуациях я использую скрипт, который делает все это. Таким образом, вы можете связать столько, сколько хотите. Иногда я сгенерирую скрипт на лету.

compileit.cmd
  call C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
  devenv $1.sln /rebuild Debug /Out last-build.txt
2 голосов
/ 14 ноября 2008

Я запускаю свой скрипт Python из командного файла, который устанавливает переменные: -)

call ...\vcvarsall.bat
c:\python26\python.exe myscript.py

Но решение Бретта звучит лучше.

2 голосов
/ 05 ноября 2008

Вы можете добавить команду devenv в конец исходного пакетного файла следующим образом:

'%comspec% /k "...vcvarsall.bat" x86 && devenv asdf.sln /rebuild ...'

(очевидно, для простоты я сократил команды)

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