0
|
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.
|