Dependencies

Setting up the build environment

Build boost

Build

There are two build systems available for ecflow:

It is recommended to use cmake, since boost-build/bjam will be deprecated.

cmake

As configure, CMake  will run some tests on the customer's system to find out if required third-party software libraries are available and notes their locations (paths). Based on this information it will produces the Makefiles needed to compile and install ecflow

CMake is a cross-platform free software program for managing the build process of software using a compiler-independent method.

Generating the Makefiles with CMake

After changing into the build ecflow directory, the user  has to run CMake with his/her own options. The command gives feedback on what requirements are fulfilled and what software is still required. Table below gives an overview of the different options of configure.  The default (without any options) will compile a share library only and install it in /usr/local/.

cmake options
doc
default
CMAKE_INSTALL_PREFIXwhere you want to install your ecflow /usr/local
CMAKE_BUILD_TYPE

to select the type of compilation:

  • Debug
  • RelWithDebInfo
  • Release (fully optimised compiler options)
  • Production
Release
CMAKE_CXX_FLAGS More flags  for the C++ compiler 
ENABLE_PYTHONenable python interfaceon
ENABLE_GUIenable build of ecflowviewon
ENABLE_ALL_TESTS

enable performance, migration, regression tests.

off
BOOST_ROOT

where to find boost ( if non-standard installation  )

If not specified cmake will look for an environment variable

of the same name.

 

The  C++  compilers are chosen by CMake. (This can be overwritten by setting the environment variables CXX on the command line before you call cmake, to the preferred compiler).

Further the variable CMAKE_CXX_FLAGS can be used to set compiler flags for optimisation or debugging. 

cd $WK
mkdir build; cd build;

# Go with defaults, this should with DCMAKE_BUILD_TYPE=Release
cmake .. 

# build release with debug info  
# cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo

# Override install prefix, build the most optimised executables 
# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/apps/ecflow -DCMAKE_BUILD_TYPE=Release  

# do not build the gui.
# cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/apps/ecflow -DCMAKE_BUILD_TYPE=Release -DENABLE_GUI=OFF

# If you do not need the python api, use:
# cmake .. -DENABLE_PYTHON=OFF

# Use -j option to speed up compilation. Determine number of cpu's
CPUS=$(lscpu -p | grep -v '#' | wc -l)
make -j${CPUS}
make check
make install

 

To use the ecFlow Python Api , you need to add/change PYTHONPATH . 

 

export PYTHONPATH=$PYTHONPATH:<prefix>/4.0.9/lib/python2.7/site-packages/ecflow
# If you used the default's then <prefix>=/usr/local
# otherwise you should use whatever you entered for -DCMAKE_INSTALL_PREFIX, hence in the examples above we would have:
export PYTHONPATH=$PYTHONPATH:/usr/local/apps/ecflow/4.0.9/lib/python2.7/site-packages/ecflow 

 

boost-build/bjam