使用python设置Visual Studio命令行构建环境

时间:2014-08-04 02:58:10

标签: python windows visual-studio

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

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)

1 个答案:

答案 0 :(得分:0)

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路径会更加便携,请参阅密钥SOFTWARE\\Microsoft\\VisualStudio\\<version>\\ShellFolder