1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
#! /usr/bin/env python
"""
Visual Studio 2005 Build Script
$Id: VsMake.py 655 2010-09-29 22:40:22Z soothe $
"""
import os
import sys
import getopt
import subprocess
# Setup some path stuff
try:
if environ['VISUALSTUDIO_BIN']:
VSBINDIR = environ['VISUALSTUDIO_BIN']
except NameError:
# Use default value for visual studio.
VSBINDIR = 'C:/Program Files/Microsoft Visual Studio 8/Common7/IDE'
print 'VISUALSTUDIO_BIN not set. Trying default value:'
print ' ' + VSBINDIR
print ''
# ------------------------------------------------------------
# usage
# ------------------------------------------------------------
def usage(errMsg):
try:
print 'Error: %s' % (errMsg)
except NameError:
pass
print 'Usage: '
print ' %s -s <path to solution> -b [Release|Debug|etc.]' % (sys.argv[0])
print ''
print ' REQUIRED OPTIONS'
print '\t-s <solution>'
print '\t-b <configuration>'
print ''
print ' BUILD OPTIONS'
print '\t-c\tMake clean'
print '\t-r\tRe-build all'
# ------------------------------------------------------------
# main
# ------------------------------------------------------------
try:
opts, args = getopt.getopt(sys.argv[1:], "s:b:rc")
except getopt.GetoptError, (msg, opt):
# print 'Error: invalid argument, %s: %s' % (opt, msg)
usage('invalid argument, %s: %s' % (opt, msg))
sys.exit(2)
# Build options
doingBuild = False
rebuildAll = False
makeClean = False
for opt, arg in opts:
if opt == '-s':
solutionFile = arg
doingBuild = True
elif opt == '-b':
buildName = arg
doingBuild = True
elif opt == '-r':
rebuildAll = True
doingBuild = True
elif opt == '-c':
makeClean = True
if rebuildAll and makeClean:
usage('Error cannot specify -c and -r together')
sys.exit(2)
try:
buildSwitch = 'build'
if rebuildAll: buildSwitch = 'rebuild'
elif makeClean: buildSwitch = 'clean'
cmd_list = ['%s/devenv.com' % VSBINDIR, '/%s' % buildSwitch, buildName, solutionFile]
cmd = " ".join(cmd_list)
print 'Executing:'
print cmd
retVal = subprocess.call(cmd_list)
# only the least sig 8 bits are the real return value
if retVal != 0:
print cmd
print '** BUILD FAILURE **'
sys.exit(retVal)
except NameError, (name):
usage('missing argument %s' % (name))
sys.exit(2)
|