Building ALM using conda¶
ALM is written in C++. To build it, a set of build tools is needed. Currently using conda gives a relatively simple and uniform way to perform building the ALM python module, ALM library for C++, and ALMM command executable. In this documentation, it is presented a step-by-step procedure to build them using conda.
Preparing build tools by conda¶
At first, it is recommended to prepare a conda environment by:
% conda create --name alm -c conda-forge python=3.8
Here the name of the conda environment is chosen alm. The detailed
instruction about the conda environment is found here.
To build ALM on linux or macOS, the following conda packages are
installed by
% conda install -c conda-forge numpy scipy h5py compilers "libblas=*=*mkl" spglib boost eigen cmake ipython mkl-include
Building ALM¶
Now the directory structure supposed in this document is shown as below:
$HOME
|-- alm
| `-- ALM
| |-- bin/
| |-- include/
| |-- lib/
| |-- python/setup.py
| |-- src/
| |-- _build/
| |-- CMakeLists.txt
| |-- CMakeLists.txt.conda
| `-- ...
|
|-- $CONDA_PREFIX/include
|-- $CONDA_PREFIX/include/eigen3
|-- $CONDA_PREFIX/lib
`-- ...
alm directory is created by us and we move to this directory. Now
we are in $HOME/alm. In this direcotry, ALM is downloaded from
github. ALM directorie is created running the following commands:
% git clone https://github.com/ttadano/ALM.git
Make sure that you are using develop branch by
% cd ALM
% git branch
* develop
When this is done on $HOME/ALM, the above directory structure is
made. If git command doesn’t exist in your system, it is also obtained
from conda by conda install git.
Building ALM python module¶
The ALM python module is built on the directory
$HOME/alm/ALM/python. So first you have to move to this directory.
The build and installation in the user directory is done by
% python setup.py build
% pip install -e .
Building ALM executable and C++ library¶
If you need only ALM python module, this section can be skipped.
Let’s assume we are in the directory $HOME/alm/ALM (see above
directory structure). The ALM
library for C++ is built using cmake. The cmake’s configuration file
has to have the filename CMakeLists.txt. So its example of
CMakeLists.txt.conda is renamed to CMakeLists.txt, i.e.,
% cp CMakeLists.txt.conda CMakeLists.txt
Then this CMakeLists.txt may be modified appropriately when the
following compilation fails.
Using this CMakeLists.txt, the ALM library for c++ is built for Linux by
% mkdir _build && cd _build
% cmake ..
% make -j4
% make install
and for macOS
% mkdir _build && cd _build
% cmake -DCMAKE_C_COMPILER='clang' -DCMAKE_CXX_COMPILER='clang++' ..
% make -j4
% make install
To see detailed make log, -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON option
for cmake should be added.
The dynamic and static link libraries and the head file are installed at
$HOME/alm/ALM/lib/libalmcxx.dylibor$HOME/alm/ALM/lib/libalmcxx.so$HOME/alm/ALM/lib/libalmcxx.a$HOME/alm/ALM/include/alm.h
The executable is found at
$HOME/alm/ALM/bin/alm
To use the dynamic link library, it may be necessary to set
$LD_LIBRARY_PATH to
% export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$HOME/alm/ALM/lib:$LD_LIBRARY_PATH
and to use the executable
% export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH