opensim-development – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 eva 1 Prebuild Instructions
2  
3 Prebuild is an XML-driven pre-build tool allowing developers to easily generate project or make files for major IDE's and .NET development tools including: Visual Studio 2005, Visual Studio 2003, Visual Studio 2002, SharpDevelop, SharpDevelop2, MonoDevelop, and NAnt.
4  
5 _______________________________________________________________________________
6 Overview
7  
8 Prebuild can be either be run from the command line to generate the
9 project and make files or you can execute the included batch (*.bat)
10 and Unix Shell script (*.sh) files.
11  
12 _______________________________________________________________________________
13 The currently supported developement tools and their associated batch
14 and shell script files.
15  
16 Visual Studio .NET 2005 (VS2005.bat)
17 Visual Studio .NET 2003 (VS2003.bat)
18 Visual Studio .NET 2002 (VS2002.bat)
19 SharpDevelop (SharpDevelop.bat) - http://www.icsharpcode.net/OpenSource/SD/
20 SharpDevelop2 (SharpDevelop.bat) - http://www.icsharpcode.net/OpenSource/SD/
21 MonoDevelop (MonoDevelop.sh) - http://www.monodevelop.com/
22 NAnt (nant.sh and nant.bat) - http://nant.sourceforge.net/
23 Autotools (autotools.bat and autotools.sh) - http://en.wikipedia.org/wiki/GNU_build_system
24  
25 Notes:
26  
27 A Unix Shell script is provided for MonoDevelop, as it does not run on
28 Windows at this time.
29  
30 Visual Studio .NET 2005 and the Visual Express IDE's can import
31 solutions from older versions of Visual Studio .NET.
32  
33 Makefiles are not currently supported.
34  
35 _______________________________________________________________________________
36 Command Line Syntax:
37  
38 Example:
39 > Prebuild /target vs2003
40  
41 This will generate the project files for Visual Studio.NET 2003 and
42 place the redirect the log to a file named PrebuildLog.txt in the
43 parent directory
44  
45  
46 The syntax structure is as below, where commandParameter is optional
47 depending on the command and you can provide several option-value
48 pairs.
49  
50 Note: The '> ' signifies the command prompt, do not enter this literally
51  
52 > Prebuild /<option> <commandParameter>
53  
54 > Prebuild /target vs2003 /pause
55  
56 > Prebuild /target vs2003 /log ../Log.txt /pause /ppo /file ProjectConfig.xml
57  
58 > Prebuild /target sharpdev /log
59  
60 > Prebuild /removedir obj|bin
61  
62 > Prebuild /target vs2003 /allowedgroups Group1|Group2
63  
64 > Prebuild /clean
65  
66 > Prebuild /clean /yes
67  
68 > Prebuild /clean vs2003
69  
70 _______________________________________________________________________________
71 Command Line Options:
72  
73 /usage - Shows the help information on how to use Prebuild and what
74 the different options are and what they do
75  
76 /clean - The project files generated for the target type specified as
77 a parameter for this option will be deleted. If no value is specified
78 or if 'all' is specified, then project files for all the target types
79 will be deleted.
80  
81 /target - Specified the name of the development tool for which project
82 or make files will be generated. Possible parameter values include:
83 vs2003, vs2002, sharpdev
84  
85 /file - Specifies the name of the XML which defines what files are to
86 be referenced by the generated project files as well as configures the
87 options for them. If not specified, prebuild.xml in the current
88 directory will be used as the default.
89  
90 /log - Specified the log file that should be written to for build
91 errors. If this option is not specified, no log file is generated,
92 but if just no value is specified, then the defaul filename will be
93 used for the log (Prebuild.log).
94  
95 /ppo - Preprocesses the xml file to test for syntax errors or problems
96 but doesn't generate the files
97  
98 /pause - Shows the console until you press a key so that you can view
99 the messages written while performing the specified actions.
100  
101 This allows you to check if an errors occurred and - if so - what it
102 was.
103  
104 /showtargets - Shows a list of all the targets that can be specified
105 as values for the /clean and /target commands.
106  
107 /allowedgroups - This is followed by a pipe-delimited list of project
108 group filter flags (eg. Group1|Group2) allow optional filtering of all
109 projects that dont have at least one of these flags
110  
111 /removedir - This is followed by a pipe-delimited list of directory
112 names that will be deleted while recursivly searching the directory of
113 the prebuild application and its child directories (eg. use obj|bin to
114 delete all output and temporary directories before file releases)
115  
116 /yes - Answer yes to any warnings (e.g. when cleaning all projects).
117  
118 _______________________________________________________________________________
119 Example Batch Files and Shell Scripts
120  
121 NOTE: Common batch and shell script files are included with Prebuild source and file releases.
122 ______________________________
123 MonoDevelop
124  
125 #!/bin/sh
126 # Generates a solution (.mds) and a set of project files (.mdp)
127  
128 # for MonoDevelop, a Mono port of SharpDevelop
129 # (http://icsharpcode.net/OpenSource/SD/Default.aspx)
130  
131 ./Prebuild /target monodev /pause
132  
133 ______________________________
134 Visual Studio .NET 2003
135  
136 @rem Generates a solution (.sln) and a set of project files (.csproj)
137 @rem for Microsoft Visual Studio .NET 2002
138 Prebuild /target vs2003 /pause
139  
140 Notes:
141 Text after lines that start with @rem are comments and are not evaluated
142 You can also place pause on the last line instead of specifing the /pause command.
143  
144 _______________________________________________________________________________
145 Example XML Configuration File
146  
147 Note:
148  
149 XML Comments (<!-- Comment -->) are used to markup the prebuild.xml
150 file with notes
151  
152 The below file may be out-of-date, however the RealmForge Prebuild
153 file serves as an up-to-date and extensive example.
154  
155 It can be viewed using Tigris.org's WebSVN
156 (http://realmforge.tigris.org/source/browse/realmforge/trunk/src/prebuild.xml)
157 by just clicking on the "view file" link for the latest revision.
158  
159 _________________________________
160  
161 <?xml version="1.0" encoding="utf-8"?>
162 <!--The version of the XML schema specified in the version and xmlns attributes should match the one for which the version of Prebuild.exe used was compiled for. In this example it is the version 1.3 schema, you can find the XSD schema file at the url specified in the xmlns attribute. -->
163 <Prebuild version="1.6" xmlns="http://dnpb.sourceforge.net/schemas/prebuild-1.6.xsd">
164 <Solution name="RealmForge"> <!--The title and file name for the solution, combine, workspace, or project group (depending on what development tool you are using)-->
165 <!--Configurations found as children of Solution are used as templates for the configurations found in the project, this allows you to avoid writing the same options in each project (and maintaining each of these). You can provide defaults and then override them in the configurations defined for each project. All options are optional.-->
166 <Configuration name="Debug">
167 <Options>
168 <!-- simple logically expressions can be evaluated, if, else, elseif, and endif are valid statements. Note that it is not neccisary to define POSIX or WIN32 -->
169 <?if OS = "Win32" ?>
170 <CompilerDefines>DEBUG;TRACE;WIN32</CompilerDefines>
171 <?else ?>
172 <CompilerDefines>DEBUG;TRACE;POSIX</CompilerDefines>
173 <?endif ?>
174 <OptimizeCode>false</OptimizeCode>
175 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
176 <AllowUnsafe>false</AllowUnsafe>
177 <WarningLevel>4</WarningLevel>
178 <!-The filter for the number of warnings or errors shown and the tolerance level as to what is an error. This is value from 0 to 4 where 4 is the most strict (least tolerent).-->
179  
180 <WarningsAsErrors>false</WarningsAsErrors>
181 <SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings>
182 <!-- A semicolon ';' delimited list of the warnings that are filtered and not shown in the output window during compiling a project. Only include the number portion of the warning codes that are shown in output during compilation (eg CS1591, should be entered as 1591)-->
183  
184 <OutputPath>..\bin</OutputPath>
185 <DebugInformation>true</DebugInformation>
186 <RegisterComInterop>false</RegisterComInterop>
187 <IncrementalBuild>true</IncrementalBuild>
188 <BaseAddress>285212672</BaseAddress>
189 <FileAlignment>4096</FileAlignment>
190 <NoStdLib>false</NoStdLib>
191 <XmlDocFile>Docs.xml</XmlDocFile>
192 </Options>
193 </Configuration>
194 <Configuration name="Release"> <!-- You can define multple configurations that projects can have, but there is no way to define which one is selected by default as this is a part of the user preferences for a project, not the solution or project files -->
195 <Options>
196 <CompilerDefines>TRACE</CompilerDefines>
197 <OptimizeCode>true</OptimizeCode>
198 <CheckUnderflowOverflow>false</CheckUnderflowOverflow>
199 <AllowUnsafe>false</AllowUnsafe>
200 <WarningLevel>4</WarningLevel>
201 <WarningsAsErrors>false</WarningsAsErrors>
202 <SuppressWarnings>1591;219;1573;1572;168</SuppressWarnings>
203 <OutputPath>..\bin</OutputPath>
204 <DebugInformation>false</DebugInformation>
205 <RegisterComInterop>false</RegisterComInterop>
206 <IncrementalBuild>true</IncrementalBuild>
207 <BaseAddress>285212672</BaseAddress>
208 <FileAlignment>4096</FileAlignment>
209 <NoStdLib>false</NoStdLib>
210 <GenerateXmlDocFile>true</GenerateXmlDocFile>
211 <XmlDocFile>Docs.xml</XmlDocFile>
212 </Options>
213 </Configuration>
214  
215 <!-- One of the projects that is included in the Solution -->
216 <Project name="RealmForge.Utility" Language="VisualBasic" path="Utility" type="Library" assemblyName="RealmForge.Utility" rootNamespace="RealmForge">
217 <Configuration name="Debug">
218 <Options>
219 <OutputPath>..\bin\lib\Utility</OutputPath>
220 <XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
221 </Options>
222 </Configuration>
223 <Configuration name="Release">
224 <Options>
225 <OutputPath>..\bin\lib\Utility</OutputPath>
226 <XmlDocFile>RealmForge.Utility.xml</XmlDocFile>
227 </Options>
228 </Configuration>
229 <ReferencePath>../bin</ReferencePath>
230 <Reference name="System"/>
231 <Reference name="System.Data"/>
232 <Reference name="System.Drawing"/>
233 <Reference name="System.Xml"/>
234 <Reference name="System.Runtime.Serialization.Formatters.Soap"/>
235 <Reference name="ICSharpCode.SharpZipLib"/>
236 <Files>
237 <Match path="." pattern="*.vb" recurse="true"/>
238 </Files>
239 </Project>
240  
241 <!-- Another projects that is included in the Solution -->
242 <Project name="DemoGame" Language="C#" path="DemoGame" type="WinExe" icon="..\bin\RealmForge.ico" assemblyName="DemoGame" rootNamespace="RealmForge">
243 <!-- icon is used to define the location of the .ico file that is embeeded in the assembly when the project is compiled. This is relative to the project path -->
244 <!--type defines the type of project, valid types are Library (.dll), WinExe (.exe), and Exe (.exe). WinExe is not windows specific, it just defines that it is a GUI application and that no Console or Command window will show when it is started-->
245  
246 <Configuration name="Debug">
247 <Options>
248 <OutputPath>..\bin</OutputPath>
249 <XmlDocFile>DemoGame.xml</XmlDocFile>
250 </Options>
251 </Configuration>
252 <Configuration name="Release">
253 <Options>
254 <OutputPath>..\bin</OutputPath>
255 <XmlDocFile>DemoGame.xml</XmlDocFile>
256 </Options>
257 </Configuration>
258 <ReferencePath>../bin</ReferencePath>
259 <Reference name="System"/> <!-- Assemblies that are located in the GAC (installed, global) can be referenced-->
260 <Reference name="ode"/> <!-- Assemblies that are located in the output directory to which the file is built can be referenced -->
261 <Reference name="RealmForge.Utility"/> <!-- When you reference the name of another project, then that project (and it's output) will be referenced instead of looking for a pre-built assembly-->
262 <Files>
263 <Match path="." pattern="*.cs" recurse="true"/>
264 <Match path="." pattern="*.bmp" recurse="true" buildAction="EmbeddedResource"/>
265 <Match path="." pattern="[^a]*\.(png|jpg)" useRegex="true" buildAction="EmbeddedResource"/>
266  
267 <!-- Uses a regex or regular expression to find all files that end with .png or .jpg but dont have the letter 'a' in their name and add them to the project as EmbeddedResource's. Because recurse enabled (default is false), only the values in the files in that are directly in the project directory (not child directories) are checked.-->
268 <!--EmbeddedResource, Content, and Compile are valid buildAction's-->
269 </Files>
270 </Project>
271  
272 </Solution>
273 </Prebuild>
274