# BayesOpt / doxygen / install.dox

 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… 39b1f57 2013-07-08 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 07574b6 2013-07-24 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… 9a5508a 2013-07-24 Ruben Martinez-C… 39b1f57 2013-07-08 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… 39b1f57 2013-07-08 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… 07574b6 2013-07-24 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… 7698d98 2013-05-21 Ruben Martinez-C… 440ba98 2013-07-19 Ruben Martinez-C… 7698d98 2013-05-21 Ruben Martinez-C… 07574b6 2013-07-24 Ruben Martinez-C… 7698d98 2013-05-21 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… 7698d98 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… 7698d98 2013-05-21 Ruben Martinez-C… dc3d971 2012-11-22 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… 7698d98 2013-05-21 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… 7698d98 2013-05-21 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… b81c781 2013-07-17 Ruben Martinez-C… 177e583 2013-07-18 Ruben Martinez-C… b81c781 2013-07-17 Ruben Martinez-C… c20fdd2 2013-07-24 Ruben Martinez-C… 87257ff 2013-05-21 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… c20fdd2 2013-07-24 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… c20fdd2 2013-07-24 Ruben Martinez-C… fce21f3 2013-07-22 Ruben Martinez-C… dc3d971 2012-11-22  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 /*! \page install Installing BayesOpt \tableofcontents The core of BayesOpt uses standard C/C++ code (C++98) so it can be compiled from many C++ compilers (gcc, clang, MSVC...). The library also include wrappers for Python, Matlab and Octave interfaces which requires extra dependencies or compilation steps. Note that the Python or Matlab/Octave interfaces are not included by default. \section unixinst Installing in Linux/MacOS: The compilation is very similar in any *nix system. Following these instructions, the library will be compiled using the default configuration. You can modify that easily as explained in \ref confinst \subsection getDepend Getting dependencies: The easiest way to compile this library is using the cross platform and cross compiler tool CMake. 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 (note that the \a octave package does not include all the necessary files): \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 gcc47 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 gcc47 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. More details about how to configure it can be found in \ref confinst \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 -DBAYESOPT_PYTHON_INTERFACE=ON . \endverbatim or \verbatim >> ccmake . \endverbatim and select the corresponding option. \b Important: Python requires a special module with shared access and nonstandard name. Thus, it will build a separate module called "bayesopt.so". This module can be accessible from Python provided that it is in the PYTHONPATH or sys.path. It cannot be linked to any executable or other libraries. Use libbayesopt.* instead. \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. On MacOS there are known issues both in Matlab and Octave about the compiler linking with the worng std++ library for different reasons. See: \li http://www.mathworks.com/matlabcentral/newsreader/view_thread/291752 \li https://mailman.cae.wisc.edu/pipermail/octave-maintainers/2012-January/026341.html
\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(optional): 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 The most important options/variables are explained in \ref confinst. \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 version of Matlab. There is a fork of MinGW with 64 bit support under development, but it has not been tested here. \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
\section confinst Configure the compilation/install CMake allows to configure the compilation using some variables (see for example how to compile the Python module in Linux). These variables can be set in Linux/MacOS from the command line with the -D flag: \verbatim >> cmake -DVARIABLE=VALUE . \endverbatim For example \verbatim >> cmake -DCMAKE_BUILD_TYPE=Debug . \endverbatim If you use ccmake in Linux/MacOS or CMake for Windows, you can access to a list of all the variables and their values. Just modify the value of the desired variable. \subsection instshared Compile as shared libraries We can select if we want BayesOpt and NLOPT compiled as shared libraries \verbatim BAYESOPT_BUILD_SHARED=ON NLOPT_BUILD_SHARED=ON \endverbatim In this case, we also need to force rebuild NLOPT (by default it is not compiled if it is found in the system). \subsection instpath Install the library in a different path CMake allows to select the install path before compilation compilation. You just need to change the CMAKE_INSTALL_PREFIX variable. \verbatim CMAKE_INSTALL_PREFIX=/your/desired/path \endverbatim \subsection mininst Minimal installation (fast compilation) Sobol sequences can be used to for the initial design (see \ref initpar). In many cases, the performance is similar to latin hypercube sampling, however including the Sobol components increases considerably the library size and the compilation time. Thus, it can be removed from compilation: \verbatim BAYESOPT_BUILD_SOBOL=OFF \endverbatim Similarly, we can avoid to compile the example files and demos: \verbatim BAYESOPT_BUILD_EXAMPLES=OFF \endverbatim */