Installing
openbabel locally sometimes is not as straightforward as it could be. Here are some notes on compiling it on the system without root permissions.
Compiling OB from sources
Fetching / updating sources from git repositories. Please notice the
patching eem charges model with eem_fix.patch (optional).
#!/bin/bash
# for the first time use:
#mkdir -p openbabel
# cd openbabel
#git clone git://github.com/openbabel/openbabel.git
cd openbabel
git pull
cd ..
# optional for patching EEM
# echo patching....
# patch openbabel/src/charges/eem.cpp < eem_fix.patch
if [ -d build ]; then
echo "********* Please delete build dir"
exit
fi
mkdir build
cd build
cmake ../openbabel -DPYTHON_BINDINGS=ON -DRUN_SWIG=ON \
-DPYTHON_INCLUDE_DIR=/usr/include/python2.6 \
-DPYTHON_LIBRARY=/usr/lib/python2.6/config/libpython2.6.so \
-DCMAKE_INSTALL_PREFIX=~/bin/openbabel-install
make -j14
make test
After successful compilation you should have a complete openbabel structure under your bin/openbabel-install:
~/bin/openbabel-install/
|-bin
|-include
|---inchi
|---openbabel-2.0
|-----openbabel
|-------json
|-------math
|-------stereo
|-lib
|---cmake
|-----openbabel2
|---openbabel
|-----2.3.90
|---pkgconfig
|---python2.6
|-----site-packages
|-share
|---man
|-----man1
|---openbabel
|-----2.3.90
Compiling align-it
Fetch the newest version of
silicos align-it, extract it to directory of your choice (eg. align-it-1.0.4). Then you can use following script to setup environmental variables and compile the program:
#!/bin/bash
export BABEL_LIBDIR=/home/fstefaniak/bin/openbabel-install/lib/
export BABEL_INCLUDEDIR=/home/fstefaniak/bin/openbabel-install/include/openbabel-2.0/openbabel/
export BABEL_DATADIR=/home/fstefaniak/bin/openbabel-install/share/openbabel/2.3.90/
cd align-it-1.0.4
mkdir build
cd build
cmake ..
make
To be continued
Some more notes
Update 2017/12/01
compiling the older version of OpenBabel (2.3.1), I get the error
Scanning dependencies of target openbabel
[ 0%] Building CXX object src/CMakeFiles/openbabel.dir/alias.o
In file included from /home/fstefaniak/sources/openbabel/openbabel-2.3.1/include/openbabel/alias.h:19:0,
from /home/fstefaniak/sources/openbabel/openbabel-2.3.1/src/alias.cpp:17:
/home/fstefaniak/sources/openbabel/openbabel-2.3.1/include/openbabel/shared_ptr.h:27:14: error: ‘std::tr1’ has not been declared
using std::tr1::shared_ptr;
^
src/CMakeFiles/openbabel.dir/build.make:62: recipe for target 'src/CMakeFiles/openbabel.dir/alias.o' failed
make[2]: *** [src/CMakeFiles/openbabel.dir/alias.o] Error 1
CMakeFiles/Makefile2:1232: recipe for target 'src/CMakeFiles/openbabel.dir/all' failed
make[1]: *** [src/CMakeFiles/openbabel.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2
Thanks to https://diane-be-unique.com/2016/10/19/openbabel-error-in-installing/ the solution is: in openbabel-2.3.1/include/openbabel/shared_ptr.h add:
#include <tr1/memory>