使用python设置Visual Studio命令行生成环境

使用python设置Visual Studio命令行生成环境,python,windows,visual-studio,Python,Windows,Visual Studio,我想用python设置VisualStudio命令行构建环境,以便使用 subprocess.call['msbuild','myapp.sln/p:Configuration=Release'] 以自动化方式构建我的项目 我还有一些其他依赖项需要使用可移植脚本语言,所以我选择了python 有没有办法做到这一点?提前谢谢 试验1失败: 我试图用python调用vcvarsall.bat。然而,它似乎并没有真正为我设置环境 import os import subprocess # Backu

我想用python设置VisualStudio命令行构建环境,以便使用

subprocess.call['msbuild','myapp.sln/p:Configuration=Release']

以自动化方式构建我的项目

我还有一些其他依赖项需要使用可移植脚本语言,所以我选择了python

有没有办法做到这一点?提前谢谢

试验1失败:

我试图用python调用vcvarsall.bat。然而,它似乎并没有真正为我设置环境

import os
import subprocess

# Backup current environment vars
envvar_backup_list = [
    'CMAKE_PREFIX_PATH',
    'PATH'
]

envvar_backup_val_list = []

for i in envvar_backup_list:
    envvar_backup_val_list.append(os.environ.get(i, None))

# Set CMAKE environment vars
os.environ['CMAKE_PREFIX_PATH'] = 'C:\\Qt\\Qt5.3.1\\5.3\\msvc2013_64\\lib\\cmake\\'

# Set MSVC environment path
current_path = os.getcwd()
os.chdir('C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\VC\\')
ret = subprocess.call(['vcvarsall.bat', 'amd64'], shell=True)
os.chdir(current_path)

subprocess.call(['msbuild'], shell=True)
subprocess.call(['cl.exe'], shell=True)

vcvarsall.bat和其他命令运行的命令行实例不同,因为每次调用subprocess.call时都会生成一个新进程,因此第一个调用可能正在初始化生成环境,但随后被终止。你需要做的是

build = subprocess.Popen(['vcvarsall.bat', 'x86', '&&', 'msbuild', myProject.sln, '/p:Configuration=Release'])
build.wait()

if build.returncode != 0:
    sys.exit("Build failed.")
PS:从注册表读取vcvarsall.bat路径将更便于移植,请参阅密钥软件\\Microsoft\\VisualStudio\\\\Shell文件夹