簡體   English   中英

使用python設置Visual Studio命令行構建環境

[英]Set up Visual Studio command line build environment with python

我想使用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)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM