# Detailed compilation To perform the compilation, execute the following commands from the root of HATCHet's repository. ```shell $ mkdir build $ cd build/ $ ccmake .. $ make ``` HATCHet's compilation process attempts to automatically find the following Gurobi's paths. | Name | Path | Comment | |------|------|---------| | `GUROBI_CPP_LIB` | `/to/gurobiXXX/YY/lib/libgurobi_c++.a` | <ul><li>`/to/gurobi` is the path to Gurobi's home, typically `/opt/gurobiXXX` for linux and `/Library/gurobiXXX` for mac</li><li>`XXX` is the Gurobi full version, e.g. 702 or 751</li><li>`YY` depends on os, typically `linux64` for linux or `mac64` for mac</li></ul> | | `GUROBI_INCLUDE_DIR` | `/to/gurobiXXX/YY/include` | <ul><li>`/to/gurobi` is the path to Gurobi's home</li><li>`XXX` is the Gurobi full version</li><li>`YY` depends on os</li></ul> | | `GUROBI_LIB` | `/to/gurobiXXX/YY/lib/libgurobiZZ.QQ` | <ul><li>`/to/gurobiXXX` is the path to Gurobi's home</li><li>`XXX` is the Gurobi full version</li><li>`YY` depends on os</li><li>`ZZ` are typically the first 2 numbers of `XXX`</li><li>`QQ` is typically `so` but becomes `dylib` for MAC version since version 8.10</li></ul> | If the automatic compilation fails to find the Gurobi's paths, these need to be specified directly. First, user needs to verify the existence of each of these 3 files. Next, user can specify these paths directly by either using ```shell $ ccmake .. ``` or by directly running `CMake` with proper flags as following ```shell $ cmake .. \ -DGUROBI_CPP_LIB=/to/gurobiXXX/YY/lib/libgurobi_c++.a \ -DGUROBI_INCLUDE_DIR=/to/gurobiXXX/YY/include \ -DGUROBI_LIB=/to/gurobiXXX/YY/lib/libgurobiZZ.QQ ```