Mercurial > hg > orthanc-book
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Sphinx/source/faq/compiling.rst Fri Apr 22 12:57:38 2016 +0200 @@ -0,0 +1,95 @@ +.. _compiling: + +Compiling Orthanc +================= + +Under Linux +----------- + +* Orthanc >= 0.7.1: See the `build instructions + <https://bitbucket.org/sjodogne/orthanc/src/default/LinuxCompilation.txt>`_ + inside the source package. +* Orthanc <= 0.7.0: See the :ref:`compiling-old`. + +Under Microsoft Windows +----------------------- + +See the `build instructions for Windows +<https://bitbucket.org/sjodogne/orthanc/src/default/INSTALL>`_ inside +the source package. + +Under OS X +---------- + +The mainline of Orthanc can compile under Apple OS X, with the XCode +compiler, since June 24th, 2014. See the `build instructions for +Darwin +<https://bitbucket.org/sjodogne/orthanc/src/default/DarwinCompilation.txt>`_ +inside the source package. + + +Please explain the build infrastructure +--------------------------------------- + +The build infrastructure of Orthanc is based upon `CMake +<http://www.cmake.org/>`_. The build scripts are designed to embed all +the third-party dependencies directly inside the Orthanc +executable. This is the meaning of the ``-DSTATIC_BUILD=TRUE`` option, +as described in the `INSTALL +<http://orthanc.googlecode.com/hg/INSTALL>`_ file of Orthanc. + +Such a static linking is very desirable under Windows, since the +Orthanc binaries do not depend on any external DLL, which results in a +straightforward installation procedure (just download the Windows +binaries and execute them), which eases the setup of the development +machines (no external library is to be manually installed, everything +is downloaded during the build configuration), and which avoids the +`DLL hell <http://en.wikipedia.org/wiki/Dll_hell>`_. As a downside, +this makes our build infrastructure rather complex. + +Static linking is not as desirable under Linux than under +Windows. Linux prefers software that dynamically links against the +system-wide libraries: This is explained by the fact that whenever a +third-party dependency benefits from a bugfix, any software that is +linked against it also immediately benefits from this fix. This also +reduces the size of the binaries as well as the build time. Under +Linux, it is thus recommended to use the ``-DSTATIC_BUILD=FALSE`` +option whenever possible. + +When the dynamic build is used, some third-party dependencies may be +unavailable or incompatible with Orthanc, depending on your Linux +distribution. Some CMake options have thus been introduced to force +the static linking against some individual third-party +dependencies. Here are the most useful: + +* ``-DUSE_SYSTEM_DCMTK=FALSE`` to statically link against DCMTK. +* ``-DUSE_SYSTEM_JSONCPP=FALSE`` to statically link against JsonCpp. + +You will also have to set the ``-DALLOW_DOWNLOADS=TRUE`` to +explicitely allow the CMake script to download the source code of any +required dependency. The source code of all these dependencies is +self-hosted on our servers at the University Hospital of Liège. + +Please also note that the option ``-DSTANDALONE_BUILD=TRUE`` must be +used whenever your plan to move the binaries or to install them on +another computer. This option will embed all the external resource +files (notably Orthanc Explorer) into the resulting executable. If +this option is set to ``FALSE``, the resources will be read from the +source directories. + + +Missing ``uuid-dev`` package +---------------------------- + +Orthanc might fail to compile, complaining about missing ``uuid-dev`` package. + +This problem seems to occur when fist building Orthanc without the +``uuid-dev`` package installed, then installing ``uuid-dev``, then +rebuilding Orthanc. It seems that the build scripts do not update the +cached variable about the presence of ``uuid-dev``. + +To solve this problem, `as reported +<https://groups.google.com/d/msg/orthanc-users/hQYulBBvJvs/S1Pm125o59gJ>`_ +by Peter Somlo, it is necessary to entirely remove the build directory +(e.g. with ``rm -rf Build``) and start again the build from a fresh +directory.