== Checking out FACT++ == First you need to get FACT++ from the svn-repository. The default command will checkout it into a sub-directory called "{{{directory}}}" at the current directory. It will be created if not existing. If the argument is omitted, the default directory is FACT++. {{{ [0] svn checkout https://www.fact-project.org/svn/trunk/FACT++ [directory] [1] cd FACT++ }}} == Creating the build system == Now create a new sub-directory '''build''' (or with your preferred name) in your main source directory (here assuming the default name was used) {{{ [2] mkdir build [3] cd build }}} And call {{{cmake}}} from there (the "{{{..}}}" is intentional!) {{{ [4] cmake .. }}} to compile with '''clang''', you might want to change the compilers by calling {{{ [4] cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ .. }}} instead. Note that not all versions of {{{clang}}} are compatible with all version of the boost-libraries on Ubuntu. You might have to try different versions. (However, it is worth it, because {{{clang}}} is much faster). If you only want to compile the basic tools (rootifysql, root2sql, fits2sql, fitsdump and zfits) you can add {{{-DTOOLS_ONLY=1}}} when calling {{{cmake}}}. This simplifies compilation because less packages are required (for example the whole QT stuff is not needed). If a package is missing, you will see an error which looks like this {{{#!default lineno=1 CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find Nova (missing: NOVA_LIBRARY NOVA_INCLUDE_DIR) Call Stack (most recent call first): /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) cmake/FindNova.cmake:11 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) CMakeLists.txt:131 (FIND_PACKAGE) }}} It is a bit tricky to find out which package is missing at the moment. The important line is line #2 {{{ Could NOT find Nova (missing: NOVA_LIBRARY NOVA_INCLUDE_DIR) }}} In this case, it is the development package of the nova library (libnova-dev). == Compiling FACT++ == Then call {{{ [5] make -jN }}} where '''N''' is the numbers of threads you want to utilize (check the number of CPU cores you can keep busy). Or you can omit the {{{-jN}}} in case you want to run on a single CPU. == Packaging FACT++ == Once successfully compiled, you can package the tool-set and build a tar-archive and a Debian package by {{{ [6] make package }}} The Debian package can then be installed system wide with {{{ [7] dpkg -i fact++-YYWWDDHH.deb }}} where '''YYWWDDHH''' is the version number compiled from the time when {{{cmake}}} was called.