Mercurial > hg > orthanc-book
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. |