[英]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.