代码之家  ›  专栏  ›  技术社区  ›  Dustin Getz sunsations

从python启动vs2008构建

  •  1
  • Dustin Getz sunsations  · 技术社区  · 16 年前

    第一个批处理文件启动命令提示符,我需要第二个命令位于第一个命令的上下文中。我怎样才能在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不起作用,我需要 德文夫 在Perl上下文中。

    4 回复  |  直到 15 年前
        1
  •  2
  •   Sanjaya R    16 年前

    在这些情况下,我使用脚本来完成这一切。这样你就可以随心所欲地链子了。有时我会在运行中生成脚本。

    compileit.cmd
      call C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
      devenv $1.sln /rebuild Debug /Out last-build.txt
    
        2
  •  3
  •   community wiki 2 revs sorin    15 年前

    我认为实现这一目标的正确方法是运行以下命令:

    %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。

        3
  •  2
  •   Brett    16 年前

    可以将devenv命令附加到原始批处理文件的末尾,如下所示:

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

    (显然,为了简单起见,我缩短了命令的长度)

        4
  •  2
  •   orip    16 年前

    我从设置变量的批处理文件中运行python脚本:—)

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

    但布雷特的解决方案听起来更好。