comparison Sphinx/source/faq/compiling.rst @ 0:901e8961f46e

initial commit
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 22 Apr 2016 12:57:38 +0200
parents
children 669ea65ba7fb
comparison
equal deleted inserted replaced
-1:000000000000 0:901e8961f46e
1 .. _compiling:
2
3 Compiling Orthanc
4 =================
5
6 Under Linux
7 -----------
8
9 * Orthanc >= 0.7.1: See the `build instructions
10 <https://bitbucket.org/sjodogne/orthanc/src/default/LinuxCompilation.txt>`_
11 inside the source package.
12 * Orthanc <= 0.7.0: See the :ref:`compiling-old`.
13
14 Under Microsoft Windows
15 -----------------------
16
17 See the `build instructions for Windows
18 <https://bitbucket.org/sjodogne/orthanc/src/default/INSTALL>`_ inside
19 the source package.
20
21 Under OS X
22 ----------
23
24 The mainline of Orthanc can compile under Apple OS X, with the XCode
25 compiler, since June 24th, 2014. See the `build instructions for
26 Darwin
27 <https://bitbucket.org/sjodogne/orthanc/src/default/DarwinCompilation.txt>`_
28 inside the source package.
29
30
31 Please explain the build infrastructure
32 ---------------------------------------
33
34 The build infrastructure of Orthanc is based upon `CMake
35 <http://www.cmake.org/>`_. The build scripts are designed to embed all
36 the third-party dependencies directly inside the Orthanc
37 executable. This is the meaning of the ``-DSTATIC_BUILD=TRUE`` option,
38 as described in the `INSTALL
39 <http://orthanc.googlecode.com/hg/INSTALL>`_ file of Orthanc.
40
41 Such a static linking is very desirable under Windows, since the
42 Orthanc binaries do not depend on any external DLL, which results in a
43 straightforward installation procedure (just download the Windows
44 binaries and execute them), which eases the setup of the development
45 machines (no external library is to be manually installed, everything
46 is downloaded during the build configuration), and which avoids the
47 `DLL hell <http://en.wikipedia.org/wiki/Dll_hell>`_. As a downside,
48 this makes our build infrastructure rather complex.
49
50 Static linking is not as desirable under Linux than under
51 Windows. Linux prefers software that dynamically links against the
52 system-wide libraries: This is explained by the fact that whenever a
53 third-party dependency benefits from a bugfix, any software that is
54 linked against it also immediately benefits from this fix. This also
55 reduces the size of the binaries as well as the build time. Under
56 Linux, it is thus recommended to use the ``-DSTATIC_BUILD=FALSE``
57 option whenever possible.
58
59 When the dynamic build is used, some third-party dependencies may be
60 unavailable or incompatible with Orthanc, depending on your Linux
61 distribution. Some CMake options have thus been introduced to force
62 the static linking against some individual third-party
63 dependencies. Here are the most useful:
64
65 * ``-DUSE_SYSTEM_DCMTK=FALSE`` to statically link against DCMTK.
66 * ``-DUSE_SYSTEM_JSONCPP=FALSE`` to statically link against JsonCpp.
67
68 You will also have to set the ``-DALLOW_DOWNLOADS=TRUE`` to
69 explicitely allow the CMake script to download the source code of any
70 required dependency. The source code of all these dependencies is
71 self-hosted on our servers at the University Hospital of Liège.
72
73 Please also note that the option ``-DSTANDALONE_BUILD=TRUE`` must be
74 used whenever your plan to move the binaries or to install them on
75 another computer. This option will embed all the external resource
76 files (notably Orthanc Explorer) into the resulting executable. If
77 this option is set to ``FALSE``, the resources will be read from the
78 source directories.
79
80
81 Missing ``uuid-dev`` package
82 ----------------------------
83
84 Orthanc might fail to compile, complaining about missing ``uuid-dev`` package.
85
86 This problem seems to occur when fist building Orthanc without the
87 ``uuid-dev`` package installed, then installing ``uuid-dev``, then
88 rebuilding Orthanc. It seems that the build scripts do not update the
89 cached variable about the presence of ``uuid-dev``.
90
91 To solve this problem, `as reported
92 <https://groups.google.com/d/msg/orthanc-users/hQYulBBvJvs/S1Pm125o59gJ>`_
93 by Peter Somlo, it is necessary to entirely remove the build directory
94 (e.g. with ``rm -rf Build``) and start again the build from a fresh
95 directory.