CGAL-5.0.2のインストール記録(windows10,visual studio 2019)

# この記事は
私がCGALライブラリを使用できる環境を整えるにあたって苦戦したため、同じ轍を踏まないように行ったことを記録したものである。（そもそも環境構築は全くやったことがなかったので）

# 環境

* windows 10 64bit Home(**Macではありません。Macの場合、[これ](https://sites.google.com/site/introduction2cgal/)と[これ](http://geblog3.blogspot.com/2016/02/cgal-47.html)が参考になりそう**)
* Visual Studio 2019 (コンポーネントは「C++によるデスクトップ開発」）
* ![2020-03-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252117/ec0833bc-e8e8-4471-931d-fb81e580339d.png)
* Git インストール済み(細かい設定は何もしていません)
* RAM 8GB
* intel Core-i5 

# CGALとは

>CGAL is a software project that provides easy access to efficient and reliable geometric algorithms in the form of a C++ library. CGAL is used in various areas needing geometric computation, such as geographic information systems, computer aided design, molecular biology, medical imaging, computer graphics, and robotics.

>(適当な訳) CGALは効率が良く、かつロバストな計算幾何アルゴリズムが簡単に扱えるC++ライブラリのソフトウェアプロジェクトである。CGALは地理情報システム、CAD、分子化学、医療用画像処理、コンピュータグラフィックス、そしてロボティクスなど、幾何計算が必要とされる様々な分野で使われている。
> ([CGAL公式サイト](https://www.cgal.org/)から引用)

計算幾何に興味があったので、使ってみようと思いました(適当)。

# 最も参考にした資料(URL)
公式サイトのインストール(for windows)説明サイトはこちらです。たくさん方法があって迷います。
[Download CGAL for Windows](https://www.cgal.org/download/windows.html)

まず、公式マニュアルを参照しましょう。
[Using CGAL on Windows (with Visual C++)](https://doc.cgal.org/latest/Manual/windows.html)

私は英語を読むのに一苦労して、「実は文中にちょろっと書かれていたのに見逃してしまう」ということが多くあって、とても時間が解けました。

次に参考にしたのは、日本語で書かれたサイトです。
2017年09月25日の記事
[[CGAL01] CGAL Set up for Visual studio 2017 (Windows 10 64 bit)](https://qiita.com/pikattoo/items/bcd6fb631868af512bff#%E8%A8%AD%E5%AE%9A-1)

2016-09-17の記事
[Visual studio 2013 + Qt + CGAL の環境設定](http://mimismgn.hatenablog.com/entry/2016/09/17/001534)

# 複数あるインストール方法について
## vcpkgでダウンロードする方法
[vcpkg](https://github.com/microsoft/vcpkg)とは、C++のコマンドラインパッケージマネージャーで、Windows、Linux、および MacOS といった複数環境に対応しています。コマンド入力するだけでライブラリのソースをダウンロード、コンパイルをしてくれます。必要なツール(7zip, cmake, pythonなど)は自動でダウンロードして使ってくれますし、すごい便利です。ただし、欠点として、いちいちコンパイルするので、インストールにとても時間がかかるのと、また容量を非常に消費します。なので、インストール後に一番容量を消費するvcpkg/buildtreesディレクトリを削除して容量を解放するなどの方法をとる人もいるでしょう(一度インストールしたらもうインストールしなおさないと考えたので自分は消しました。消しても問題ないようです[^1])

## CGALのインストーラを用いてインストールする方法
日本語で書かれた資料があるので心強いです[^2],[^3]。
環境変数の設定が必要になりますが、日本語資料[^2],[^3]にも書かれている上に、公式マニュアル[^4]にも書いてあるので大丈夫かと思われます。

# 目標
CGAL公式マニュアルに明記されているサンプルプログラムが含まれたCGAL-5.0.2-examplesのTriangulation_2/draw_triangulation_2.cppプログラムを動かすことができること

# Vcpkgを用いたインストール方法
## Vcpkgのインストール
Cドライブにdevディレクトリを作成して、そこに[Git](https://git-scm.com/)を使ってvcpkgのレポジトリを複製(クローン)します。そして、できたdev/vcpkgディレクトリの中のバッチファイルを動かしてインストールします。

```
C:\dev> git clone https://github.com/microsoft/vcpkg
C:\dev> cd vcpkg
C:\dev\vcpkg> .\bootstrap-vcpkg.bat
```

ここで、``Warning: The following VS instances are excluded because the English language pack is unavailable.``といったエラーが発生し、インストールできなかった場合は、Visual Studio Installerを開いて、英語の言語パックを追加してからインストールしなおしてください（[参考資料１](https://kagasu.hatenablog.com/entry/2019/02/20/162907)、[参考資料２](https://kagasu.hatenablog.com/entry/2019/02/20/163953)）。
環境変数PATHにvcpkg.exeのディレクトリを設定しておきます。

```
PATH += C:\dev\vcpkg
```

## CGALとQtのインストール
64bitの場合

```
C:\dev\vcpkg> vcpkg install cgal:x64-windows
```
で、32bitの場合、

```
C:\dev\vcpkg> vcpkg install cgal:x86-windows
```

でインストールします。
CGALだけならこれで十分ですが、サンプルプログラムにはCGALのほかにも[Qt](https://www.qt.io/jp/)が必要であるため、私は

```
C:\dev\vcpkg> vcpkg install cgal[qt]:x64-windows
```

と入力しました（***コンパイルに3~4時間かかります***）。

インストールが完了したら、ユーザーごとにすべての vcpkg ヘッダーファイルとバイナリを検索するように Visual Studio を構成するため、以下のコマンドを実行します[^5]。

```
C:\dev\vcpkg> vcpkg integrate install
```

なお、インストールできるライブラリは```vcpkg search (検索ワード)```で調べられ、インストールしたライブラリは```vcpkg list```で列挙できます。

**vcpkgのライブラリを消さずに無効にしたい場合は、```vcpkg integrate remove```で無効にできます。アクティベートしたい場合はまた```vcpkg integrate install```を実行するだけです。**

## cmakeのインストール
[https://cmake.org/download/](https://cmake.org/download/)
上記URLより、cmake-3.17.0-rc3-win64-x64.msiをダウンロードしました。
インストーラ起動後、Install Optionで、「Add Cmake to the system PATH for all users」にチェックをつけてインストールしました。ほぼ[こちら](https://qiita.com/pikattoo/items/bcd6fb631868af512bff#%E8%A8%AD%E5%AE%9A-1)に準拠。

## サンプルプログラムのダウンロード
[公式マニュアル](https://doc.cgal.org/latest/Manual/windows.html)の「1.3 Compiling an Example」にあるURLでCGAL-5.0.2-examples.zipをダウンロードし、```C:/Users/(ユーザ名)```に展開。```C:/Users/(ユーザ名)/CGAL-5.0.2```というディレクトリができる。

## サンプルプログラムのコンパイル
``C:/Users/(ユーザ名)/CGAL-5.0.2/examples/Triangulation_2``ディレクトリで、``build``フォルダを作成し、そのフォルダで``cmake-gui``を起動

```
C:/Users/(ユーザ名)/CGAL-5.0.2/examples/Triangulation_2 > mkdir build
C:/Users/(ユーザ名)/CGAL-5.0.2/examples/Triangulation_2 > cd build
C:/Users/(ユーザ名)/CGAL-5.0.2/examples/Triangulation_2/build > cmake-gui ..
```

![2020-03-15 (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252117/15f657e1-f641-eeab-3822-4b2dfc8bb227.png)

下の「Configure」ボタンを押す

![2020-03-15 (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252117/3d7e7193-f7fa-d149-4ad4-a8e4bd8dc1ec.png)

上の画面が出てこない場合は、左上の「File」→「Delete Cache」を押してから、「Configure」を押しなおしてください。
[公式マニュアル](https://doc.cgal.org/latest/Manual/windows.html)の「1.3.1 Configuring of an Example」に書かれている

>The command cmake-gui launches the graphical interface for cmake. When you hit the Configure button, you must:

>* specify the Generator (e.g., Visual Studio 16 2019),
>* specify the Optional Platform (e.g., x64 in case you want to create 64 bit binaries),
>* select Specify toolchain file for cross compilation (the file vcpkg.cmake within the directory where you have installed vcpkg, e.g. ***C:/dev/vcpkg/scripts/buildsystems/vcpkg.cmake***).

とあるように、設定する。

![2020-03-15 (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252117/cff41298-8139-2387-ab61-e4024731e6cc.png)

「Next」を押して、toolchain（?何かよくわからない）を設定する。

![2020-03-15 (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252117/0a0200c7-2d26-660d-f472-d3d174bf6745.png)

「Finish」を押す。

![2020-03-15 (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252117/db4eb0e2-3350-bf98-0ef1-50230848550a.png)

いろいろ設定が完了する。
最後に「Configure」の隣の「Generate」ボタンを押して、「Open Project」を押して、Visual Studio 2019を開く。

![2020-03-15 (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252117/27696cc0-3c6e-723c-9ec2-512009338d4f.png)

とりあえずすべてビルドしてみる。「ビルド」を押し、「ソリューションのビルド（B)」を押す。

その後、ソリューションエクスプローラの「Draw_Triangulation_2」を右クリック、出てきたメニューから「デバッグ」→「新しいインスタンスを開始」をクリック。

以下のような画面がでてきたら成功。
![2020-03-15 (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/252117/83ea0355-4e35-9c46-de35-7c1de5acb176.png)


# インストーラを用いたインストール方法
執筆中
先人たちの記事[^2],[^3]とやっていることはほとんど同じです。ただ、CGALライブラリ本体のコンパイルについては、公式マニュアルの「[Building CGAL libraries (non header-only mode)
](https://doc.cgal.org/latest/Manual/installation.html)」を一番に参考にするべきだと思います。

[^1]: [Build tree files of vcpkg occupies over 10 GiB disk space. #2352](https://github.com/Microsoft/vcpkg/issues/2352) にて、"We have the flag in place to cleanup the buildtress (and it is used by the ci command), but doing that has some disadvantages like preventing F12'ing in the files and having to re-extract/re-patch every time. "と記されている。
[^2]: [[CGAL01] CGAL Set up for Visual studio 2017 (Windows 10 64 bit)](https://qiita.com/pikattoo/items/bcd6fb631868af512bff#%E8%A8%AD%E5%AE%9A-1)
[^3]: [Visual studio 2013 + Qt + CGAL の環境設定](http://mimismgn.hatenablog.com/entry/2016/09/17/001534)
[^4]: [Using CGAL on Windows (with Visual C++)](https://doc.cgal.org/latest/Manual/windows.html)
[^5]: [vcpkg: Windows、Linux、および MacOS 用の C++ パッケージ マネージャー](https://docs.microsoft.com/ja-jp/cpp/build/vcpkg?view=vs-2019)