File: project.html

package info (click to toggle)
quickfix 1.13.3%2Bdfsg-9
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 152,548 kB
  • ctags: 679,426
  • sloc: cpp: 639,331; xml: 129,200; python: 108,722; ruby: 85,152; sh: 10,492; ansic: 9,025; java: 1,827; cs: 1,145; makefile: 523; sql: 313; perl: 108
file content (129 lines) | stat: -rw-r--r-- 6,332 bytes parent folder | download
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

<html>
  <head>
    <title>Setting Up Your Project</title>
    <H1>Setting Up Your Project</H1>
  </head>

  <body>
    <p>
      Before using quickfix, you must make sure that your project has build settings that
      are compatible. Being a portable piece of code, some tradeoffs needed to be made concerning
      the areas of portability, maintainability, performance, testability, and features.
    </p>
    <p>
      QuickFIX makes use of many advanced features of C++ that help and hinder some of these
      areas. We believe that for QuickFIX to be the best product it could be, the use of templates,
      exceptions, and the STL were important in most elegantly expressing the logic and data of a FIX
      engine. Therefore it is necessary that your compiler support these features. Most
      modern compilers will have no problem however there are some caveats which will be listed
      in the following sections.
    </p>

    <p>
    <UL>
      <LI><A HREF="#Windows (C++)">Windows (C++)</A></LI>
      <LI><A HREF="#Windows (.NET)">Windows (.NET)</A></LI>
      <LI><A HREF="#Linux/Solaris (C++)">Linux/Solaris (C++)</A></LI>
      <LI><A HREF="#Java">Java</A></LI>
    </UL>
    </p>

    <A NAME="Windows (C++)"/>
    <H3>Windows (C++)</H3>
    <p>
      The following settings concerning quickfix can all be found under the <B>project | properties</B>
      dialog box in Microsoft Visual Studio. All pages in this dialog box are organized by tabs
      and catagories.  When refering to a setting, the format <B>tab | catagory | setting</B> will be
      used.
    </p>
    <p>
      <UL>
        <LI><B>C/C++ | Optimization | Optimization</B>, can be set to whatever you prefer. The quickfix
               library by default is built with <I>Maximize Speed</I> but your project does not need
               to use the same setting.
        <LI><B>C/C++ | Code Generation | Enable C++ Exceptions</B>, should be Yes.
        <LI><B>C/C++ | Code Generation | Runtime Library</B>, should be set to <I>Multithreaded DLL</I>
               or <I>Debug Multithreaded DLL</I>. If you want to use a different setting, you must rebuild QuickFIX with
               the same setting.  QuickFIX cannot currently be built single threaded.
        <LI><B>C/C++ | General | Additional Include Directories</B>, must have a directory
               for accessing the QuickFIX header files. We reccomend setting this to a couple
               directories above the header files so your includes can look like <B>#include
               &lt;quickfix/Application.h&gt;</B>. This helps resolves ambiguities between your
               application and other third party libraries.
        <LI><B>Linker | Input | Additional Dependencies</B>, must contain the <I>quickfix.lib</I>
               file. It must also have <I>ws2_32.lib</I>. This library links the winsock library into your
               application.
        <LI><B>Linker | General | Additional Library Directories</B>, must have the directory where <I>quickfix.lib</I> resides.
      </UL>
    </p>

    <A NAME="Windows (.NET)"/>
    <H3>Windows (.NET)</H3>
    <p>
    This couldn't be simpler.
    </p>
      <UL>
        <LI>Add the <B>quickfix_net.dll</B> and <B>quickfix_net_message.dll</B> to the references
        section of your projects.
     </UL>
    </p>

    <A NAME="Linux/Solaris (C++)"/>
    <H3>Linux/Solaris</H3>
    <p>
      Linux/Solaris have several caveats. Using GCC you have to keep a couple things in mind. Support
      for C++ is adequate but not great. The unix world is still primarily driven by C and therefore
      the tools are more readily available and optimized for C. Although everything builds and works
      correctly under Linux and Solaris, there are a few things to keep in mind.
    </p>
    <p>
      <UL>
        <LI>Because GCC isn't particularly optimized for C++ code, GCC compiled code tends to be slower than code compiled
        by some of the commercially available compilers. If you feel you need more performance, you may
        want to try one of these compilers. If you do this, please run the unit tests and acceptance
        tests to verify everything works as it should. We only currently do our testing with GCC.
        <LI>STL implementations that come with Versions of GCC 2.95.x, are not safe for use on
        multi-processor machines.  Use STLport or upgrade to a version
        3.x.x.  STLport also tends to be faster then the
        implementation that comes with GCC.
      </UL>
    </p>
    <p>
      There are a lot of choices for how to build under a unix environment. We use GNU autotools,
      however a lot of people don't. Instead of going over setting up an autotools project (a complex
      topic that I could not do justice here), I will simply cover what parameters need to be passed
      into your compiler and linker.
    </p>
    <p>
      <UL>
        <LI>Exceptions must be enabled with <B>-fexceptions</B>
        <LI>The <B>-finline-functions</B> optimization is recommended. Much of quickfix is in templates
            declared in header files. Allowing the compiler to inline some of these functions can
            help to optimize many frequent calls.
        <LI>Quickfix library must be linked in with <B>-lquickfix</B>
        <LI>Quickfix makes use of pthreads and libxml.  These must be linked in with <B>-lpthread</B>,
            <B>-lxml2</B> and <B>-lz</B>
        <LI>In addition to the above, on Solaris you must link with <B>-lnsl</B> and <B>-lsocket</B>
        <BR><B>NB</B>: GNU <TT>ld</TT> is a one-pass linker, so order is important.  Put more generally
        useful libraries (libsocket) last on the command line.
      </UL>

      The actual placement of the quickfix library and header files should have been done for you
      when you ran <B>make install</B> after building quickfix.
    </p>
  </body>

  <A NAME="Java"/>
  <H3>Java</H3>
    <p>
      The QuickFIX/J jar file has been provided for your convenience. It is recommended you
      download the full QuickFIX/J projects from <a href="http://www.quickfixj.org">www.quickfixj.org</a>.
    </p>
    <p>
      <UL>
	    <LI>When compiling, make sure <B>quickfixj.jar</B> is in your classpath.
	  </UL>
	</p>
</html>