BayesOpt / doxygen / install.dox

/*! \page install Installing BayesOpt
\tableofcontents

The core of BayesOpt uses standard C/C++ code (C++98) and it can be
compiled in different platforms and used from different languages
thanks to the wrappers provided.

\section unixinst Installing in Linux/MacOS:

The compilation is very similar in any *nix system. Note that the
Python or Matlab interfaces are not included by default.

\subsection getDepend Getting dependencies:

The easiest way to compile this library is using the cross platform
and cross compiler tool <a href="http://www.cmake.org/">CMake</a>.

This code uses Boost libraries for matrix operations (uBlas), random
number generation, math functions and smart pointers. Being only
include files, Boost does not require any speciall install. Boost can
be found in many Linux and MacOS repositories. It can also be
downloaded from http://www.boost.org.

Both Python development files (Python.h) and Numpy are needed if you
want the Python interface. The library has been tested with Python 2.6
and 2.7. The interface relies on Numpy arrays.

Finally, if you want the Matlab interface, just make sure your C++
compiler is compatible with your Matlab version.

\subsubsection cinlinux Linux:
For Ubuntu/Debian, the minimum dependencies (C/C++) can be optained by running:
\verbatim
>> sudo apt-get install libboost-dev cmake cmake-curses-gui g++
\endverbatim

If you want the Python interface:
\verbatim
>> sudo apt-get install python-dev python-numpy
\endverbatim

If you want the Octave interface:
\verbatim
>> sudo apt-get install octave-headers
\endverbatim

And for all dependencies:
\verbatim
>> sudo apt-get install libboost-dev python-dev python-numpy cmake cmake-curses-gui g++ cython octave-headers
\endverbatim

\subsubsection cinmac MacOS:
This section assumes \b macports is installed. Similar packages can be
found in \b fink or \b homebrew. For the minimal install, run:
\verbatim
>> sudo port install boost gcc46 cmake
\endverbatim

If you want the Python interface:
\verbatim
>> sudo port install python27 py27-numpy
\endverbatim

If you want the Octave interface:
\verbatim
>> sudo port install octave
\endverbatim

Again, for all dependencies:
\verbatim
>> sudo port install boost python27 py27-numpy gcc46 cmake py27-cython octave
\endverbatim


\subsection compile Compile the library:
In order to compile the source code in a *nix system, run this from a
terminal.
\verbatim
>> cmake . 
>> make
>> sudo make install
\endverbatim

\b Important: If you use \b ccmake instead of \b cmake you will access
a graphical interface to select features such as the include the
Python and Matlab interfaces, debug/release mode or if you want to use
shared libraries or not. \b Shared libraries are required to run the
Python interface.

\subsubsection instpath Install the library in a different path

CMake allows to select the install path during compilation. You just
need to change the CMAKE_INSTALL_PREFIX variable.  This can be done
directly from the command line with the -D option, like this:

\verbatim
>> cmake -DCMAKE_INSTALL_PREFIX=/your/desired/path .
\endverbatim

or if you use ccmake, just modify the value of the variable with the
corresponding path.

\subsubsection docbuild Building the documentation

If you have doxygen installed on your computer, you can compile the
documentation right after compiling the code by running.
\verbatim
>> make doc
\endverbatim
Thid documentation will appear in the "doc" subdirectory.

\subsection instpython Python interface:

Both Python development files (Python.h) and Numpy are needed if you
want the python interface. The library has been tested with Python 2.6
and 2.7. The interface relies on Numpy arrays. If we want to select
the option to compile the Python interface we can just run:
\verbatim
>> cmake -DBUILD_PYTHON=ON . 
\endverbatim
or 
\verbatim
>> ccmake . 
\endverbatim
and select the corresponding option.

\b Important: Python requires bayesopt to be a \b shared library. The
option is automatically adjusted by CMake.

\subsection instmatlab MATLAB/Octave interface:

Make sure the library is compiled with the MATLAB_COMPATIBLE option
using ccmake. Undex Mac OS they must be shared. Also, configure 
Matlab/Octave to compile mex files. For example, in Matlab you can run
to check the supported compilers:
\verbatim
>> mex -setup
\endverbatim

Run the corresponding script compile_matlab.m or compile_octave.m,
which can be found in the \em /matlab/ directory.

If bayesopt or nlopt are compiled as \b shared libraries, then, at run
time, MATLAB/Octave also needs to access to the libraries. For
example, LD_LIBRARY_PATH must include the folder where the libraries
are. If the install path is the default, you can execute the
exportlocalpath.sh script before calling MATLAB.


<HR>

\section cinwin Windows and other systems:
Install this components:
\li CMake: http://www.cmake.org

CMake for Windows provides a nice GUI where you can select your
favorite C++ compiler (MinGW, Visual Studio, etc.). It will
automatically create the necesary configuration files for the compiler
(makefile, solution, etc.).

\li Boost: http://www.boost.org

Since Boost they are pure template libraries, they do not require
compilation. Just make sure the headers are on the include path. You
can also add an entry named BOOST_ROOT in CMake with the corresponding
path to the library.

\li MinGW: http://www.mingw.org

If you do not have a C++ compiler, we recomend MinGW+MSYS. Then, you
just need to compile from the command line with:
\verbatim
>> mingw32-make
\endverbatim

\subsection instpythonwin Python interface:

The Python interface has not been tested in \b Windows because getting
the correct dependencies is highly involved. You might need to
download and install:
\li Python (binary and \b sources): http://www.python.org
\li Numpy: http://new.scipy.org/download.html 

Also, read this article about how to link everything:
http://docs.python.org/2/extending/windows.html#building-on-windows


\subsection instmatlabwin MATLAB/Octave interface:

Make sure the library is compiled with the MATLAB_COMPATIBLE option
and configure Matlab/Octave to compile mex files. For example, in
Matlab you can run to check the supported compilers:
\verbatim
>> mex -setup
\endverbatim

Run the corresponding script compile_matlab.m or compile_octave.m,
which can be found in the \em /matlab/ directory. 

If bayesopt or nlopt are compiled as \b shared libraries, then, at run
time, MATLAB/Octave also needs to access to the libraries. You can
modify the PATH variable or copy the dll files in the same bolder as
the generated mexfile.

\b Important: It is strongly recommended to compile bayesopt with
exactly the same compiler that was select for mex files. For a list of
the supported compilers for your Matlab version, you can check the
online docs at mathworks. 

\subsubsection matlabmingw MATLAB and MinGW

Unfortunately, MinGW has never been suported by Matlab. Thus I have
also included a Makefile to generate the mex files outside Matlab. You
might need to change the \c MATLABROOT path with the root folder of
your Matlab install and copy the dlls. Then, run \c mingw32-make. Note
that \c mingw32-make only supports 32 bits libraries, so you need a 32
bit Matlab install.

 */
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.