\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)
CGAL 5.0 - Manual

CGAL is distributed under a dual license scheme, that is under the Gpl/Lgpl open source license, as well as under commercial licenses.

CGAL consists of different parts covered by different open source licenses. In this section we explain the essence of the different licenses, as well as the rationale why we have chosen them.

The fact that CGAL is Open Source software does not mean that users are free to do whatever they want with the software. Using the software means to accept the license, which has the status of a contract between the user and the owner of the CGAL software.


The Gpl is an Open Source license that, if you distribute your software based on Gpled CGAL data structures, obliges you to distribute the source code of your software under the Gpl.

The exact license terms can be found at the Free Software Foundation web site: http://www.gnu.org/copyleft/gpl.html.


The Lgpl is an Open Source license that obliges you to distribute modifications you make on CGAL software accessible to the users. In contrast to the Gpl, there is no obligation to make the source code of software you build on top of Lgpled CGAL data structures.

The exact license terms can be found at the Free Software Foundation web site: http://www.gnu.org/copyleft/lesser.html.

Rationale of the License Choice

We have chosen the Gpl and the Lgpl as they are well-known and well-understood open source licenses. The former restricts commercial use, and the latter allows to promote software as de facto standard so that people can build new higher level data structures on top.

Therefore, the packages forming a foundation layer are distributed under the Lgpl, and the higher level packages under the Gpl. The package overview states for each package under which license it is distributed.

Commercial Licenses

Users who cannot comply with the Open Source license terms can buy individual data structures under various commercial licenses from GeometryFactory: http://www.geometryfactory.com/. License fees paid by commercial customers are reinvested in R&D performed by the CGAL project partners, as well as in evolutive maintenance.

License Checking

Users who have a commercial license for specific packages can check that they do not accidentally use packages for which they do not have a commercial license. The same holds for users who want to be sure that they only use packages of CGAL released under the Lgpl.

To enable checking, users have to define one of the following macros:

Macro Name Effect
CGAL_LICENSE_WARNING get a warning during the compilation
CGAL_LICENSE_ERROR get an error during the compilation

The license checking is not a mean to control users as no information is collected or transmitted.

Identifying the Version of CGAL

Every release of CGAL defines the following preprocessor macros:

a textual description of the current release (e.g., or 3.3 or 3.2.1 or 3.2.1-I-15) as a string literal

a numerical description of the current release such that more recent releases have higher number.

More precisely, it is defined as 1MMmmbiiii, where MM is the major release number (e.g. 03), mm is the minor release number (e.g. 02), b is the bug-fix release number (e.g. 0), and iiii is the internal release number (e.g. 0001). For public releases, the latter is defined as 1000. Examples: for the public release 3.2.4 this number is 1030241000; for internal release 3.2-I-1, it is 1030200001. Note that this scheme was modified around 3.2-I-30.

a function macro computing the version number macro from the M.m.b release version. Note that the internal release number is dropped here. Example: CGAL_VERSION_NUMBER(3,2,4) is equal to 1030241000.

The macro CGAL_VERSION is deprecated. It is the same as CGAL_VERSION_STR, but not as a string literal.