WSLとDebianを使ってMarchingCubes33ライブラリを動かしたい

# 目標
WSLとDebianを使ってMarchingCubes33ライブラリのサンプルを動かす

そのライブラリとはこれ
[C and C++ libraries of Marching Cubes 33](https://facyt-quimicomp.neocities.org/MC33_libraries.html)
当初はMSYS2とかMinGWでやろうとしてたんだけど署名関連のエラーが解決できなくて詰んだので方向転換してDebianを使ってやってみることにした

# 環境
Windows 10 Home

# 方法
## 1. WSLを有効，Debianのインストール
### 1.1 WSLを有効にする

```コントロールパネル > プログラム > Windowsの機能の有効化または無効化```
```Windows Subsystem for LINUX```にチェックを入れる

### 1.2 Debianのインストール

```Microsoft Store```を開いて```Debian```と検索
ヒットした```Debian```をインストール

### 1.3 ホームディレクトリを変更する
Windows側からWSL側のディレクトリにアクセスするのが非常に面倒だったのでC:直下に```debian_home```ディレクトリを作ってそちらにホームディレクトリを変更しました
やりかたは[【WSL】Ubuntuのホームディレクトリを変更する _ IT土方の奮闘記](https://it-blue-collar-dairy.com/change_home_directory_for_ubuntu/)を参考にしました
めっちゃわかりやすい

#### Vimのインストール
あ，ただ初期状態ではvimが入っていなかったのでインストールする必要がありました
使ったコマンドはこれ

```console:Shell
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install vim
```

## 2. 最低限必要なライブラリをインストールする
初期状態ではmakeも使えませんでした．
他にもgccとかいろいろ無さそうなのでまとめてインストールすることにします．

```console:Shell
$ sudo apt-get install build-essential
```

## 3. MarchingCubes33ライブラリのダウンロード
### 3.1 ダウンロード
[C and C++ libraries of Marching Cubes 33](https://facyt-quimicomp.neocities.org/MC33_libraries.html)
ここのサイトの```MC33++ v2.0```バージョンをダウンロード

### 3.2 .7zの解凍
ダウンロードしたファイルが```.7z```という見たことない拡張子で解凍できなかったので専用のソフトウェアを探すことに

なんでもいいとは思いますが僕が使ったのはこれ
[圧縮・解凍ソフト 7-Zip](https://sevenzip.osdn.jp/)
```7-Zip 19.00(2019-02-21) for Windows```バージョンでパソコンに合わせて64bit版のダウンロードしてインストール

解凍したものを```debian_home```ディレクトリ以下のどこかわかりやすい場所に置いておく

## 4. exampleをmakeする
さっき解凍したものの中に含まれている```example```ディレクトリに移動
で，make

```console:Shell
$ make -f makefiledebian.mak
```

### make中に「無え！」って怒られたもの
怒られたものと解決したコマンドをまとめて列挙しておきます
#### fltk
```console:Shell
$ sudo apt-get install libfltk1.3 libfltk1.3-dev
```

この```1.3```って数字は変わってるかもしれないので

```console:Shell
$ apt-cache search fltk
```
で出てくるものを確認してみてください

#### -lXft, -lfontconfig, -lXrender
こんな感じで怒られた

```console:Shell
/usr/bin/ld: cannot find -lXft
/usr/bin/ld: cannot find -lfontconfig
/usr/bin/ld: cannot find -lXrender
```

```console:Shell
$ sudo apt-get install libxft-dev
```
この１行だけでエラー消えました

ただすでに```libxft2```ってやつはインストールされていたので，
もしかしたら```-lXft```オプションで```libxft2```を自動的に呼び出すように設定したらうまくいくのかもしれません

## 5. TestMCを動かしてみる
### 5.1 Can't open display
make後にディレクトリを見てみるとそれっぽいファイルができていたので呼んでみる

```console:Shell
$ ./TestMC
Can't open display:
```

このままではだめみたい

どうやらディスプレイ先を指定していないことが原因らしいって記述を見かけて
```export DISPLAY=:0.0```とかしてみたけどうまくいかず．．．

もしかしてLinuxでの処理した画像とかをWindows上で表示させる```Xming```とやらが必要？？

### 5.2 Xmingのインストールと起動
#### Xmingとは
Linuxでの処理した画像とかをWindows上で表示させるソフトウェア
．．．らしい

[Xming X Server for Windows 日本語情報トップページ - OSDN](https://ja.osdn.net/projects/sfnet_xming/)
ここのページのダウンロードのところから```Xming-6-9-0-31-setup.exe```をダウンロード
インストールはとりあえずデフォルトのままで進めました

インストールが完了して起動すると画面下のツールバーにアイコンが表示されます

そのアイコンにカーソルを合わせてみるとなんとなく```:0.0```で起動されてそうな雰囲気がある！
というわけで```DISPLAY```を設定してみた

### 5.3 DISPLAYの設定
一旦ホームディレクトリに戻って```.profile```をVimエディタで開く

```console:Shell
$ cd
$ vim ~/.profile
```

で一番下あたりに次のように追記する

```bash:.profile
export DISPLAY=:0.0
```

追記したら```.profile```を保存してVimエディタを閉じて再読み込みさせる

```console:Shell
$ source ~/.profile
```

それが終わったらさっきの```example```ディレクトリに戻ってTestMCを起動

```console:Shell
$ ./TestMC
```

<img width="451" alt="TestMC33.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/616261/8424010c-3a54-428a-b202-d738223f94b6.png">

できた！！！（歓喜）

．
．
．
できたはいいが使い方がわからぬ．．．

## 6. データを読み込んで表示させる
READMEを読むとどうやらdatファイルかrawファイルを読み込ませることができるらしい
試しにrawファイルでやってみましたがどうにも```core dumpped```が発生してしまう．．．

が，とりあえずデモの起動まではできたのでひとまず良しとします！

# 課題
実際にデータファイルを読み込んで計算させる


# 参考
- [How to install vim editor on Debian 10](https://vitux.com/how-to-install-vim-editor-on-debian/)
- [Debian User Forums • View topic - Installation of FLTK](http://forums.debian.net/viewtopic.php?f=17&t=21977)
- [WSL(Windows Subsystem for Linux)上でGUIアプリを動かすまでの手順 _ 人生は読めないブログ](https://torisky.com/wslwindows-subsystem-for-linux%e4%b8%8a%e3%81%a7gui%e3%82%a2%e3%83%97%e3%83%aa%e3%82%92%e5%8b%95%e3%81%8b%e3%81%99%e3%81%be%e3%81%a7%e3%81%ae%e6%89%8b%e9%a0%86/)