Building CGAL Libraries From a Branch
=====================================

Building CGAL using the *branch build* presented here keeps the
build-sources attached to the Git repository.

Note that we do not document here what are the dependancies and cmake options that
are needed to configure CGAL as they are already documented in the
[installation manual](https://doc.cgal.org/latest/Manual/installation.html).

Branch Build of CGAL
====================
The cmake script at the root of the repository is the one to use to
build the CGAL library from a branch. It will collect the list of packages
of the branch and will append their include folder to the include path.
This is main noticable difference with a build using a regular *flat* release.

Here is an example of how to build the library in Debug:
``` {.bash}
git clone https://github.com/CGAL/cgal.git /path/to/cgal.git
cd /path/to/cgal.git
mkdir -p build/debug
cd build/debug
cmake -DCMAKE_BUILD_TYPE=Debug ../..
make
```

Here is an example of how to build the library in Release:
``` {.bash}
git clone https://github.com/CGAL/cgal.git /path/to/cgal.git
cd /path/to/cgal.git
mkdir -p build/release
cd build/release
cmake -DCMAKE_BUILD_TYPE=Release ../..
make
```
Note that *no installation is required* to use that version of CGAL once it has been compiled.

Building a Program Using CGAL
=============================

To compile a program using CGAL, simply set `CGAL_DIR` to the location
of where you built the library (environment or cmake variable).

Here is an example of how to build in debug the examples from the 3D Triangulations package:

``` {.bash}
 cmake -DCGAL_DIR:PATH=/path/to/cgal.git/build/debug /path/to/cgal.git/Triangulation_3/examples/Triangulation_3
 make
```

If you're trying to build examples or tests that does not already have a `CMakeLists.txt`, you can trigger its creation by calling the script [`cgal_create_cmake_script`](Scripts/scripts/cgal_create_cmake_script) found in `/path/to/cgal.git/Scripts/scripts/` at the root of the example/test directory. Here is an example for the examples of the 2D Triangulation package:

``` {.bash}
 cd /path/to/cgal.git/Triangulation_2/examples/Triangulation_2
 /path/to/cgal.git/Scripts/scripts/cgal_create_cmake_script
 cd -
 cmake -DCGAL_DIR:PATH=/path/to/cgal.git/build/debug /path/to/cgal.git/Triangulation_2/examples/Triangulation_2
 make
```

Note If You Switch Between Branches
===================================
A build may be outdated after an include/dir has been deleted,
switched or even updated. This might lead to compile problems (link
with outdated version). Thus, it is recommended to build CGAL after
each update, switch, merge of a branch (in particular if directories
have been added/deleted, or cpp files have been added, deleted or
altered).


