[メモ] Visual C++ for linux Development でOpenGL

Visual C++ Team Blogの [Visual C++ for Linux Development](https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development/)エントリのDesktop Applicationsのサンプルをやってみる。
![VCLinuxOpenGL8_.png](https://qiita-image-store.s3.amazonaws.com/0/75594/c23299dc-9b0d-c2b2-1532-ef3f38f1e396.png)

![VCLinuxOpenGL12.png](https://qiita-image-store.s3.amazonaws.com/0/75594/4951830a-9402-30f7-bf4c-3361423da863.png)


## 環境

- Windows 10 (64bit)
- Visual Studio 2015 Update 2 (Enterprise) 全部入りでインストール。
- Linux: Lubuntu 14.04.4 LTS (64bit)<br>[くまさんISO](http://kumasan1949.zouri.jp/down-ubuntu-f.html)から`Lubuntu-14.04.4-64bit-kuma0317.iso`を利用し、VMWareの仮想マシンとしてインストール
- Visual C++ for linux Development : インストールは、[こちらの記事](http://qiita.com/mt08/items/e6d6179335d6653ebb89#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)から

## 準備: Linux
1. インストール後は、いつもの...

    ```shell-session
sudo apt-get update
sudo apt-get upgrade
sudo apt-get autoremove
sudo apt-get autoclean
```

2. Visual C++ for Linux developmentで必要なパッケージ<br>`sudo apt-get install -y openssh-server g++ gdb gdbserver`

3. OpenGL開発ライブラリ("> *Here are the apt packages we used: libgles1-mesa, libgles1-mesa-dev, freeglut3, freeglut3-dev.*")<br>`sudo apt-get install -y freeglut3-dev`

## VS2015: Getting Started
1. プロジェクト作成
    1. ファイル > 新規作成 > プロジェクト<br>で、新しいプロジェクト　ダイアログから
    2. インストール済み>テンプレート>Visual C++>クロスプラットフォーム > Linux を選んで
    3. Empty Project (Linux) を選んで、<br>![VCLinuxOpenGL1.png](https://qiita-image-store.s3.amazonaws.com/0/75594/d98cfc57-a660-a6ce-914b-1fd3b4f2d8b1.png)
    4. (名前、場所、とか、かえたり、かえなかったりして)
    5. [OK]
2. main.cppをプロジェクトへ追加
    1. ソリューションエクスプローラのProject1で、右クリック
    2. 追加 > 新しい項目　<br>![VCLinuxOpenGL3_.png](https://qiita-image-store.s3.amazonaws.com/0/75594/15196334-9b56-a39b-7794-d27a83b79be1.png)
    3. C++ファイル(.cpp) を選んで、名前をmain.cppとして、追加<br>![VCLinuxOpenGL4.png](https://qiita-image-store.s3.amazonaws.com/0/75594/e1286ab0-a238-1b2b-82c0-f5daa03bf4de.png)
3. OpenGLコード
    1.  [Julien Guertault’s OpenGL tutorial](http://lousodrome.net/opengl/)から、[Spinning cube](http://lousodrome.net/opengl/#spinningcube)のソースを持ってくる。<br>
=>　Download the spinning cube example.　から　spinningcube.tar.gzをダウンロード
    2. 解凍して取り出したmain.cファイルの内容を、main.cppへこぴぺして、CTRL+S
4. プロジェクト > Project1のプロパティ 設定
    1. Remote settings  : Target machine が接続先になってるか、確認<br>![VCLinuxOpenGL5.png](https://qiita-image-store.s3.amazonaws.com/0/75594/b2ffa146-ef6e-5c35-b748-c7035e3c2662.png)
    2. リンクするライブラリ追加 : Linker > Input : Library Dependenciesへ、`m;GL;GLU;glut` をいれる。<br>![VCLinuxOpenGL6.png](https://qiita-image-store.s3.amazonaws.com/0/75594/98c965d6-38b7-2f8a-1e03-42cf9a96596d.png)
    3. デバッグ > Pre-Launch Commandへ、`export DISPLAY=:0.0` をいれる。<br>![VCLinuxOpenGL7.png](https://qiita-image-store.s3.amazonaws.com/0/75594/79cd7c5d-3b15-f363-c975-66225062a39a.png)
  

## 実行・ブレイクポイント
1. [F5]: ビルド・デバッグ実行
2. 立方体がぐるぐる回る
<br>![VCLinuxOpenGL8_.png](https://qiita-image-store.s3.amazonaws.com/0/75594/b2f36e11-5cf3-f274-0186-20b379b0a637.png)
3. ブレークポイントを張ってみる　(34行目にかーそるをもっていって [F9])<br>![VCLinuxOpenGL9.png](https://qiita-image-store.s3.amazonaws.com/0/75594/b3639b6d-c3c3-6da9-a250-0da7f01ed9be.png)
4. 立方体がとまる


## おまけ
 Ubuntu側の`/usr/include`をsambaで共有して、VCのインクルードパスに加えれば・・・

1. sambaインストール・簡単設定
2. インストール<br>`sudo apt-get install -y samba`
3. smb.conf編集

    ```shell-session
sudo mv /etc/samba/cmb.conf /etc/samba/smb.conf.org  #念のためオリジナル保存
sudo cp /etc/samba/cmb.conf.org /etc/samba/smb.conf
sudo vi /etc/samba/smb.conf  #編集
```
    - viでは、'G'をおして最終行へジャンプ
    - 以下をsmb.confの最後に追加 

    ```txt:/etc/samba/smb.conf(ゲストでリードオンリーで設定)
...
# 共有名
[usr_include]
# 共有フォルダ指定
path = /usr/include
# 読み出しのみ
writable = no
# ゲストユーザーOK
guest ok = yes
# 全てゲストとして扱う
guest only = yes
```
4. samba再起動 <br> `sudo service smbd restart`
5. Windowsから、共有フォルダを見てみる<br>![VCLinuxOpenGL10.png](https://qiita-image-store.s3.amazonaws.com/0/75594/5e01ab0c-29dd-9a65-99f8-2922749f06e4.png)
6. プロジェクト> プロパティをひらいて、VC++ Directoriesで、`Include Directories`にusr_includeを追加。<br>![VCLinuxOpenGL11.png](https://qiita-image-store.s3.amazonaws.com/0/75594/9cf584c1-8309-0ef2-d40f-d629f10a6e28.png)
7. <font color='red'>赤い波線</font>も消えて、定義が見れますね。<br>![VCLinuxOpenGL12.png](https://qiita-image-store.s3.amazonaws.com/0/75594/4951830a-9402-30f7-bf4c-3361423da863.png)

## その他
リンクされてるっぽい
[(ぼくの技術日誌) VisualStudio2015とVisual C++ for Linux Developmentを使ってみる](http://engineernote.hatenablog.com/entry/2016/04/18/185414)