OSDN Git Service

Version 3.00
[vbslib/main.git] / _src / Test / vbslib_test / vbslib / vbslib300 / VisualStudio.vbs
1 Option Explicit \r
2 \r
3 ' vbslib  ver3.00  Sep.22, 2009\r
4 ' Copyright (c) 2008-2009, T's-Neko at Sage Plaisir 21 (Japan)\r
5 ' All rights reserved. Based on 3-clause BSD license.\r
6 \r
7 Dim  g_SrcPath\r
8 Dim  g_VisualStudio_Path\r
9      g_VisualStudio_Path = g_SrcPath\r
10 \r
11 Const  E_PathNotFound2 = &h80070002\r
12 \r
13 \r
14  \r
15 '********************************************************************************\r
16 '  <<< [devenv_rebuild] Visual Studio 2005 command line build >>> \r
17 '********************************************************************************\r
18 Sub  devenv_rebuild( sln_path, config )\r
19   Dim m : Set m = get_DevEnvObj()\r
20   m.Rebuild  sln_path, config\r
21 End Sub\r
22 \r
23  \r
24 '********************************************************************************\r
25 '  <<< [devenv_build] Visual Studio 2005 command line build >>> \r
26 '********************************************************************************\r
27 Sub  devenv_build( sln_path, config )\r
28   Dim m : Set m = get_DevEnvObj()\r
29   m.Build  sln_path, config\r
30 End Sub\r
31 \r
32  \r
33 '********************************************************************************\r
34 '  <<< [devenv_clean] Visual Studio 2005 clean >>> \r
35 '********************************************************************************\r
36 Sub  devenv_clean( ByVal sln )\r
37   Dim m : Set m = get_DevEnvObj()\r
38   m.Clean  sln\r
39 End Sub\r
40 \r
41  \r
42 '********************************************************************************\r
43 '  <<< [get_DevEnvObj] >>> \r
44 '********************************************************************************\r
45 Dim  g_DevEnvObj\r
46 \r
47 Function    get_DevEnvObj()  '// has_interface_of ClassI\r
48   If IsEmpty( g_DevEnvObj ) Then _\r
49     Set g_DevEnvObj = new DevEnvObj : ErrCheck\r
50   Set get_DevEnvObj =   g_DevEnvObj\r
51 End Function\r
52 \r
53  \r
54 '-------------------------------------------------------------------------\r
55 ' ### <<<< [DevEnvObj] Class >>>> \r
56 '-------------------------------------------------------------------------\r
57 Class  DevEnvObj\r
58 \r
59   Public  m_InstallDir2008\r
60   Public  m_InstallDir2005\r
61   '// vbslib var: devenv_ver_name\r
62 \r
63   Private Sub  Class_Initialize()\r
64     Dim  v\r
65     m_InstallDir2008 = RegRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\"+_\r
66        "InstallDir" )\r
67     v = RegRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\9.0\StartPage\NewsChannel" )\r
68     If not IsEmpty( v ) Then\r
69       If IsEmpty( GetVar( "devenv_ver_name" ) ) Then\r
70         SetVar  "devenv_ver_name", "vs2008"\r
71       End IF\r
72     End If\r
73 \r
74     m_InstallDir2005 = RegRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\"+_\r
75        "InstallDir" )\r
76     v = RegRead( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\StartPage\NewsChannel" )\r
77     If not IsEmpty( v ) Then\r
78       If IsEmpty( GetVar( "devenv_ver_name" ) ) Then\r
79         SetVar  "devenv_ver_name", "vs2005"\r
80       End IF\r
81     End If\r
82   End Sub\r
83 \r
84 \r
85  \r
86 '********************************************************************************\r
87 '  <<< [devenv] >>> \r
88 '********************************************************************************\r
89 Public Sub  devenv( SlnPath, param, config )\r
90   Dim  r, cmdline\r
91   Dim  install_dir\r
92 \r
93   '//=== Get install_dir\r
94   Select Case  GetSlnFileVer( SlnPath )\r
95     Case  2008\r
96       If IsEmpty( m_InstallDir2008 ) Then  Raise 1,"Visual Studio 2008 \82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ"\r
97       install_dir = m_InstallDir2008\r
98     Case  2005\r
99       If IsEmpty( m_InstallDir2005 ) Then  Raise 1,"Visual Studio 2005 \82ª\83C\83\93\83X\83g\81[\83\8b\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ"\r
100       install_dir = m_InstallDir2005\r
101   End Select\r
102 \r
103 \r
104   '//=== Start build\r
105   cmdline = """" + install_dir + "devenv.exe"" " + param + " """ + config + """"\r
106   r = g_sh.Run( cmdline,, True )\r
107 \r
108   If r <> 0 Then  Err.raise E_BuildFail,,"devenv failed " + param + " in " + g_sh.CurrentDirectory\r
109 End Sub\r
110 \r
111 \r
112  \r
113 '********************************************************************************\r
114 '  <<< [Rebuild] >>> \r
115 '********************************************************************************\r
116 Public Sub  Rebuild( sln_path, config )\r
117   Dim  sln_path2 : sln_path2 = env( sln_path )\r
118   echo_c  ">devenv.exe """+sln_path2+""" /rebuild "+config\r
119   echo_c  " (if cl.exe was already run background by stop build, it may be fail.)"\r
120   Me.devenv  sln_path2, """" + sln_path2 + """ /rebuild", config\r
121 End Sub\r
122 \r
123 \r
124 \r
125  \r
126 '********************************************************************************\r
127 '  <<< [Build] >>> \r
128 '********************************************************************************\r
129 Public Sub  Build( sln_path, config )\r
130   Dim  sln_path2 : sln_path2 = env( sln_path )\r
131   echo_c  ">devenv.exe """+sln_path2+""" /build "+config\r
132   echo_c  " (if cl.exe was already run background by stop build, it may be fail.)"\r
133   Me.devenv  sln_path2, """" + sln_path2 + """ /build", config\r
134 End Sub\r
135 \r
136 \r
137  \r
138 '********************************************************************************\r
139 '  <<< [Clean] >>> \r
140 '********************************************************************************\r
141 Public Sub  Clean( sln_path )\r
142   Dim  sln_path2 : sln_path2 = env( sln_path )\r
143   If not g_fs.FileExists( sln_path2 ) Then  Err.Raise  E_FileNotExist,,"Not found : " + sln_path2\r
144   echo_c  ">devenv.exe """+sln_path2+""" /clean *"\r
145   Dim  ec : Set ec = new EchoOff\r
146 \r
147   Me.devenv  sln_path2, """"+sln_path2+""" /clean", "Release"\r
148   del "Release"\r
149   Me.devenv  sln_path2, """"+sln_path2+""" /clean", "Debug"\r
150 \r
151   del "Debug"\r
152   del "*.ncb"\r
153   del "*.suo"\r
154   del "*.user"\r
155 End Sub\r
156  \r
157 End Class \r
158  \r
159 '********************************************************************************\r
160 '  <<< [GetSlnFileVer] >>> \r
161 ' - ret : 2008, 2005\r
162 '********************************************************************************\r
163 Function  GetSlnFileVer( SlnPath )\r
164   Dim  f, line, args, i\r
165   Dim  ec : Set ec = new EchoOff\r
166 \r
167   Set f = OpenForRead( SlnPath )\r
168   i=1\r
169   Do Until  f.AtEndOfStream\r
170     line = f.ReadLine()\r
171 \r
172     If InStr( line, "# Visual Studio" ) > 0 Then\r
173       GetSlnFileVer = CInt( Mid( line, 17 ) )\r
174       Exit Function\r
175     End If\r
176 \r
177     If i=10 Then Exit Do\r
178     i=i+1\r
179   Loop\r
180   Raise  1,"<ERROR msg='.sln \83t\83@\83C\83\8b\82É\83o\81[\83W\83\87\83\93\8fî\95ñ\82ª\8c©\82Â\82©\82è\82Ü\82¹\82ñ'"+_\r
181       " path='" + SlnPath + "'/>"\r
182 End Function\r
183 \r
184 \r
185  \r