python - 从 python 启动 vs2008 构建

标签 python windows visual-studio-2008 build-automation

第一个批处理文件启动命令提示符,我需要第二个命令位于第一个命令的上下文中。我如何在 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 上下文中获取 devenv

最佳答案

我认为实现此目的的正确方法是运行此命令:

%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 也是一个好主意。

关于python - 从 python 启动 vs2008 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/263820/

相关文章:

python - Altair 更改边框颜色 LayerChart

windows - 一旦被电源设置关闭,如何唤醒我的 Windows 显示器?

java - 使用 Java 运行时添加注册表项,导致进程 reg.exe 永远运行

c++ - std::unordered_map 使用 Visual C++ 2008 的未声明标识符

python - 为什么我得到一个错误,该错误是指我的类(class)圈子中不存在的对象?

python - Robot Framework - 将库函数作为参数传递

Python-文件处理(Write方法)

java - 在 Windows 命令行中读取所有编译错误?

visual-studio - 如何在 Visual Studio 中添加高优先级 TODO 注释?

vb.net - 将图像从图片框保存到数据库时出现问题。 VB.Net 2008.框架3.5