2006-11-07 13:54:47 +00:00
|
|
|
<?xml version="1.0"?>
|
|
|
|
<!DOCTYPE sect2 PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
|
|
|
|
<sect2 id="build-windows">
|
|
|
|
<title>On Windows</title>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Prerequisites</title>
|
|
|
|
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Microsoft Visual Studio 7.1
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
DC-API library and header files
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
Zip file containing the skeleton for an application
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Preparing the repository</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Unzip the contents of the attached zip file. Copy the following three
|
|
|
|
header files of the DC-API in the <filename
|
2006-11-23 15:45:08 +00:00
|
|
|
class='directory'>include</filename> directory: <filename
|
|
|
|
class='headerfile'>dc_client.h</filename>, <filename
|
2006-11-07 13:54:47 +00:00
|
|
|
class='headerfile'>dc_common.h</filename>, <filename
|
|
|
|
class='headerfile'>dc_win32.h</filename>. Copy the following library
|
|
|
|
file of the DC-API in the <filename class='directory'>lib</filename>
|
2006-11-23 15:45:08 +00:00
|
|
|
directory: <filename class='libraryfile'>dc_client.lib</filename>.
|
2006-11-07 13:54:47 +00:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
The source code of the application goes into the <filename
|
|
|
|
class='directory'>src</filename> directory, which already contains an
|
|
|
|
application skeleton. The Visual Studio Related files are in the <filename
|
|
|
|
class='directory'>win_build</filename> directory.
|
|
|
|
</para>
|
|
|
|
</sect3>
|
|
|
|
|
|
|
|
<sect3>
|
|
|
|
<title>Using Visual Studio to compile the application</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
Open the <filename>application.sln</filename> file in Microsoft Visual
|
|
|
|
Studio 7.1 (MVS from now on). Open up the 'Soultion Explorer' window in
|
|
|
|
MVS, if it is not open yet
|
|
|
|
(<keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>L</keycap></keycombo>).
|
|
|
|
In the 'Solution Explorer' window you will see the Solution called
|
|
|
|
'application' to which several subdirectories belong.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
Open up the <filename class='directory'>Source Files</filename>
|
2006-11-23 15:45:08 +00:00
|
|
|
subdirectory to check that <filename>application.c</filename> is already
|
|
|
|
added to the solution. Double click on <filename>application.c</filename>
|
|
|
|
to open it up in MVS. Similarily, the header files are located in the
|
|
|
|
<filename class='directory'>Header Files</filename> subdirectory.
|
2006-11-07 13:54:47 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Adding more source files to the solution</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If you want to add more header or source files, put them in the
|
|
|
|
<filename class='directory'>include</filename> or the <filename
|
|
|
|
class='directory'>src</filename> directories, respectively. After the
|
|
|
|
files are settled in place right click on the <filename
|
|
|
|
class='directory'>Source Files</filename> in the 'Solution Explorer'
|
|
|
|
and choose
|
|
|
|
<menuchoice>
|
|
|
|
<guimenu>Add</guimenu>
|
|
|
|
<guimenuitem>Add Existing Item</guimenuitem>
|
|
|
|
</menuchoice>
|
|
|
|
from the menu to add the source files. Do the same for the header files
|
|
|
|
to add them to the <filename class='directory'>Header Files</filename>
|
|
|
|
directory.
|
|
|
|
</para>
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Developing the application</title>
|
|
|
|
|
|
|
|
<para>
|
2006-11-23 15:45:08 +00:00
|
|
|
The source file <filename>application.c</filename> already contains the
|
|
|
|
neccessary include files and some basic functions for an application
|
|
|
|
utilizing the DC-API to compile. The source is structured in an
|
|
|
|
intuitive way. You can use these functions to realize the several
|
|
|
|
functions of a BOINC application (like checkpointing) or you can clear
|
|
|
|
these and develop your own methods.
|
2006-11-07 13:54:47 +00:00
|
|
|
</para>
|
|
|
|
</sect4>
|
|
|
|
|
|
|
|
<sect4>
|
|
|
|
<title>Compiling the solution</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
The skeleton 'application' solution is set up to compile with the
|
|
|
|
DC-API. In the middle part on the menu of MVS there is a drop down box
|
|
|
|
showing <guimenuitem>Debug</guimenuitem> or
|
|
|
|
<guimenuitem>Release</guimenuitem>. With this drop down box, you can
|
|
|
|
select different configurations to compile your application with. Before
|
|
|
|
compiling set this to the appropriate configuration.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
If you compile in <guimenuitem>Debug</guimenuitem> mode,
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
you'll be able to debug the application by visually stepping
|
|
|
|
through the execution,
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
however, the executable will be bigger and will not be
|
|
|
|
optimalized.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
Use this mode for debugging only.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
If you compile in <guimenuitem>Release</guimenuitem> mode,
|
|
|
|
<itemizedlist>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
the executable will be optimalized, resulting in a faster and
|
|
|
|
smaller code,
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
|
|
|
however, you'll not be able to visually debug your applcation.
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</itemizedlist>
|
|
|
|
Use this mode for compiling release versions.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
To compile the application select <guimenuitem>Build
|
|
|
|
solution</guimenuitem> from the <guimenu>Build</guimenu> menu or press
|
|
|
|
<keycap>F7</keycap>. During compilation you will see an output window
|
|
|
|
showing the progress of the compilation.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
If compilation fails the last line of the output window will show:
|
|
|
|
<screen>
|
|
|
|
Build: 0 succeeded, 1 failed, 0 skipped</screen>
|
|
|
|
Scroll back in the 'Output Window' to locate the problem and correct it
|
|
|
|
as neccessary.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
If compilation is successful the last line of the output window will
|
|
|
|
show: <screen>
|
|
|
|
Build: 1 succeeded, 0 failed, 0 skipped
|
|
|
|
</screen>
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
During compilation a subdirectory is created in the <filename
|
|
|
|
class='directory'>win_build</filename>
|
|
|
|
directory of the repository having the same name as the current
|
|
|
|
configuration (Debug or Release) You will find the compiled executable
|
|
|
|
in these subdirectories with the name
|
2006-11-23 15:45:08 +00:00
|
|
|
<application>application_1.00_windows_intelx86.exe</application>.
|
2006-11-07 13:54:47 +00:00
|
|
|
</para>
|
|
|
|
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
|
|
<title>Debugging the application</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
If the application is successfully compiled in
|
|
|
|
<guimenuitem>Debug</guimenuitem> mode, you can debug it visually. During
|
|
|
|
debugging the current directory where the application will look for its
|
|
|
|
input and output files will the <filename
|
|
|
|
class='directory'>win_build</filename> directory. Copy the input files
|
|
|
|
of the application in the <filename
|
|
|
|
class='directory'>win_build</filename> directory. Select
|
|
|
|
<guimenuitem>Step Into</guimenuitem> from the <guimenu>Debug</guimenu>
|
|
|
|
menu to start debugging or press <keycap>F11</keycap>. If the
|
|
|
|
application is outdated, MVS will ask to recompile it, select
|
|
|
|
<guimenuitem>Yes</guimenuitem>. The applcation will be started and you
|
|
|
|
will see a yellow arrow pointing to the current line of code to be
|
|
|
|
executed. Keep pressing <keycap>F11</keycap> to step through the program
|
|
|
|
lines. If the next call is a function, you can skip the function
|
|
|
|
by pressing <keycap>F10</keycap> (<guimenuitem>Step Over</guimenuitem>)
|
|
|
|
and continue debugging on the point where the function returns.
|
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
You can set breakpoints in the code by clicking on the grey area next to
|
|
|
|
the program line, where the yellow arrow moves during debugging. A big
|
|
|
|
red dot appears marking a breakpoint.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
To clear the breakpoint click on the big red dot or select
|
|
|
|
<guimenuitem>Clear All Breakpoints</guimenuitem>
|
|
|
|
(<keycombo><keycap>Ctrl</keycap><keycap>Shift</keycap><keycap>F9</keycap></keycombo>)
|
|
|
|
from the 'Debug' menu. You can start the application in debug mode by
|
|
|
|
selecting <guimenuitem>Start</guimenuitem> from the
|
|
|
|
<guimenu>Debug</guimenu> menu, or by pressing <keycap>F5</keycap>.
|
|
|
|
Execution will be breaken on the point where you have set breakpoints.
|
|
|
|
To continue execution after a breakpoint press <keycap>F5</keycap>.
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
To stop debugging press
|
|
|
|
<keycombo><keycap>Shift</keycap><keycap>F5</keycap></keycombo> or select
|
|
|
|
the <guimenuitem>Stop Debugging</guimenuitem> item in the menu of MVS.
|
|
|
|
</para>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
|
|
<title>Changing configuration properties</title>
|
|
|
|
|
|
|
|
<para>
|
|
|
|
You can change the properties of 'Debug' and 'Release' modes by right
|
|
|
|
clicking on the 'applcation' in the 'Solution Explorer' window and
|
|
|
|
selecting <guimenuitem>Properties</guimenuitem>. However, the
|
|
|
|
configuration is already set up to best suit the needs of application
|
|
|
|
development with DC-API so in most cases no configuration option is
|
|
|
|
needed to be changed.
|
|
|
|
</para>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
<!-- vim: set ai sw=2 tw=80: -->
|