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 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
CMake based build system
============================
The file contains the instruction to build Hugin with CMake.
1. DEPENDENCIES
Hugin depends on the following packages.
1.1. Build-Time Dependencies
Users compiling Hugin from source will need:
A C++compiler which supports OpenMP and C++11.
* OpenMP support is not required. But when compiling
without OpenMP nona and cpfind (and some other
algorithm) are running only with one thread,
which is slower.
CMake (the build system), version >=3.15
The wxWidgets GUI toolkit version >=3.0.0.
C++17 TS <filesystem> or boost::filesystem (boost >=1.47)
libtiff the TIFF library with LZW support.
libpano13 version >=2.9.19
libjpg the JPEG library
libpng the PNG library
libopenexr the OpenEXR library
libvigra the VIGRA libray, header files and impex library (>=1.9)
Exiv2 Image metadata library
GLEW the OpenGL Extension Wrangler Library or libepoxy (see BUILD_WITH_EPOXY switch below)
gettext
sqlite3, the SQL database backend for the lens database
littlecms2, little cms color engine
optionally, lapack
optionally, libfftw3
on Unix you need also
libGLU the OpenGL utility library
libxi
libxmu
on Windows you need
HTML Help Workshop for generating compiled HTML help file
on Mac OS you need
freeglut or glut, the OpenGL utility toolkit
for the optional Python Scripting Interface (currently functional and tested only on Linux and Windows)
Python version >=3.0
Python package setuptools only with Python >=3.12
SWIG >=2.0.4
Hugin can be compiled with gcc, as well as with MSVC.
The build process requires CMake version >=3.12
If cmake fails to pick up some dependencies, make sure you have
the corresponding development packages installed (often named:
libjpeg-dev and so on).
Notes:
When using wxWidgets 3.0.x series Hugin does not run native on Wayland. A workaround is to use the
XWayland emulation layer. This has be activated during building by adding -DUSE_GDKBACKEND_X11=on
to the CMake command line. (This is not necessary when compiling against wxWidgets 3.2.x or later).
On Linux wxWidgets 3.1.5 and later is by default compiled with EGL support for the wxGLCanvas class.
In this case you need to activate EGL support explicitly also in GLEW, otherwise there are crashes when
intializing the wxGLCanvas. Alternatively you can also use the epoxy library instead of GLEW, which does
the detection at run time. To build with epoxy add -DBUILD_WITH_EPOXY=on to the CMake command line.
1.2. At runtime
During runtime of Hugin the following programs are needed:
enblend >= 3.2 is required.
Exiftool, version >=9.09 is required to support GPano tags. Otherwise they are ignored.
Optionally Python argparse command-line parsing library for the Python scripts.
2. COMPILING
=======================================
First, create a build directory and change into it:
$ mkdir mybuild
$ cd mybuild
Then call CMake from this build directory and point to the *root* directory of the
extracted Hugin sources. (Don't specify the src subdirectory in the Hugin sources.)
CMake can also create install package. Depending on the format of your packages
call for a Debian package
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCPACK_BINARY_DEB:BOOL=ON /PATH/HUGIN_SOURCE
or for a rpm package
$ cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCPACK_BINARY_RPM:BOOL=ON /PATH/HUGIN_SOURCE
(for other formats see CMake documentation)
Build the package
$ make package
and install the package with your package manager
The build process can be configured with different switches. These variables
can be set with the -D command line parameter. Important variables include:
CMAKE_INSTALL_PREFIX Destination directory of make install
(default: /usr/local)
CMAKE_BUILD_TYPE Specify the build type (Release (Default) or Debug)
LIB_SUFFIX Specifies suffix used for library paths. For AMD64,
usually 64 is used as prefix. Default: empty.
Setting to 64 results in: $CMAKE_INSTALL_PREFIX/lib64
HUGIN_SHARED set to 0 to disable build shared libraries for internal
functions.
BUILD_HSI=on Set to on to build with Python scripting support
USE_GDKBACKEND_X11=on Set to on to enforce using X11 as GDKBACKEND.
This is needed for Wayland, because wxWidgets wxGLCanvas
does not support Wayland at the moment.
BUILD_WITH_EGL=on When set to on it uses EGL to initialize OpenGL context
in nona instead of X windows functions.
BUILD_WITH_EPOXY=on Use libepoxy instead of GLEW for handling OpenGL function
pointers
ENABLE_LAPACK=on Use LAPACK based solver, otherwise a builtin LU based
solver is used for photometric optimizer.
The LAPACK solver could be more stable, but no extensive
comparison was done.
MAC_SELF_CONTAINED_BUNDLE=1 Configures hugin for a fully bundled version, where
all required programs (nona, enblend, HuginStitchProject,
etc.) are embedded in the bundle.
Without this switch, hugin will behave just like on
any other unix platform and depend on resources
outside the bundle (translations, data files etc.).
UNIX_SELF_CONTAINED_BUNDLE=on Configure hugin for building a fully bundled
AppImage version, where all dependencies are embedded in
the bundle.
CMake offers also a GUI which makes setting these variables and checking the paths
to the dependencies easier.
3. FURTHER REMARKS
=======================================
3.1 Fedora's rpmbuild
=====================
If using Fedora's rpmbuild to build an rpm package, the recommended procedure
is similar to the above.
$ cd hugin
$ mkdir mybuild
$ cd mybuild
$ cmake ..
$ make package_source
copy, or move the selected source archive (.bz2 or .gz) from your mybuild dir to your rpmbuild
SOURCE dir, generate or edit your .spec file, and build your package.
3.2 For distributors
====================
CMake supports the DESTDIR variable during make install, this
might be helpful to install into a temporary directory during
package creation
$ make install DESTDIR=mytmp_package_dir
Please report any problems to the hugin-ptx group at google:
http://groups.google.com/group/hugin-ptx
|