Webサイト工事中です! 閲覧できますが不具合があるかもしれません

オレオレ描画エンジン(?)を作る : 2日目 (Windowsでビルドできるようにする)

2日目です。

 

 

目次

とりあえず、ビルドコマンドをシェルスクリプトにしておく。

まだ、Makefileとか書くタイミングだと感じていないので、とりあえずビルドするためのシェルスクリプトにしておきます。

#!/bin/sh

g++ ./src/main.cpp -o./bin/RViz.out -I../include -L../lib -lglfw3 -framework Cocoa -framework OpenGL -framework IOKit -framework CoreFoundation -framework CoreVideo

build_mac.shと言う名前でリポジトリのルートにおきました。

続いて

chmod +x build_mac.sh

で実行可能にしておきます。

コミットしてプッシュ

 

 

Windowsでビルドできるようにする。

WindowsではVisual Studio 2017でビルドできるようにします。

そのためには

  • Windowsでgitリポジトリのクローン
  • GLFWのビルド
  • Visual Studioのプロジェクト作成

などをやる必要があります。

 

 

Git clone

ここでは深く説明しませんが、git for windowsやSourcetree、GitKrakenなどを使うといいでしょう。

https://github.com/FL1NE/RViz

 

 

GLFWのビルド

Mac同様にGLFWの公式サイトからダウンロードして解凍しておきます。

 

CMakeList.txtがあってVisualStudioのプロジェクトファイルがみつからないのでCMakeで生成し、ビルドします。 (Releaseでビルドします)

 

あわせて読みたい
WindowsでCMakeを使い、Visual Studio用のプロジェクト/ソリューションを生成する。 オープンソースのライブラリやらを使おうとしたとき、Visual Studioのプロジェクトファイルが見つからないことがありますよね。 ただ、フォルダをよくみるとCMakeLists....

CMakeを使用したビルド方法に関してはこちらの記事を参考にしてください。

 

完成したライブラリは[glfwのフォルダ]/src/Release内にglfw3.libと言う名前で出力されます。

完成したglfw3.libをRVizのlibディレクトリにコピーしておきます。

 

 

Visual Studioのプロジェクト作成

まずはVisual Studioを開きます。 (今回はVS 2017)

 

ファイル > 新規作成 > プロジェクト を選択します。

 

Windows コンソール アプリケーションを選択し、名前をRVizにしてOKをクリックします。

 

プロジェクトが作成されました。

 

デフォルトでいくつかのソースファイルとヘッダーファイルが自動的に作成されるので、削除します。 (今回は使わないため)

 

削除後ソリューションを右クリックし、エクスプローラーでフォルダーを開きます。

フォルダーが開いたら、現在開いてるVisual Studioは一旦閉じます。

 

フォルダーの中身はこのようになっています。

今回はソリューションファイルよりもプロジェクトファイルが必要なのでRVizフォルダーを開きます。

 

いました。 このRViz.vcxprojをRVizのリポジトリにvcprojと言うフォルダを作成し、コピーします。

 

コピーができたら、コピーしたRViz.vcxprojをダブルクリックし、Visual Studioを開き、閉じます。

 

するとソリューションファイルを保存するか聞かれるので、「はい」をクリックし、RVizリポジトリの直下にRViz.slnを保存します。

これでVisual Studioのプロジェクトとソリューションが作成できました。

 

 

ビルドできるようにする。

保存した、RViz.slnをダブルクリックで開きます。

 

ソリューションエクスプローラーを見たらゴミが残ってました。

消しましょう。

 

その後プロジェクトにフォルダーを3つ追加します。

名前はそれぞれ、src, lib, includeにしておきます。

 

その後、作成したそれぞれのフォルダーにRViz内のフォルダーをドラッグアンドドロップし、画像のような状態にします。

 

RVizのプロパティを開きます。

デフォルトで C/C++ > プリコンパイル済みヘッダー が使用する状態になっているので、使用しないように変更しておきます。

変更後 OK をクリックします。

 

試しに脳みそ空っぽにしてビルドしてみたら、エラーが出ました。

まあ、リンカーの設定とかしてないから当たり前なんだけど…

 

エラーの内容をみると…

1>LINK : warning LNK4098: defaultlib 'MSVCRT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
1>main.obj : error LNK2019: 未解決の外部シンボル __imp__glClear@4 が関数 _main で参照されました。
1>main.obj : error LNK2019: 未解決の外部シンボル __imp__glClearColor@16 が関数 _main で参照されました。
1>C:Usersfl1neDocumentsRVizDebugRViz.exe : fatal error LNK1120: 2 件の未解決の外部参照

やはり、コードのコンパイルはできてるけど、リンクができていない状態でした。

で、このメッセージをみるからにglfw3.libは解決されていて、OpenGLそのもののライブラリがリンクできてないようです。

 

プロジェクトのプロパティを開き、リンカー > 入力 から追加の依存ファイルを編集します。

 

opengl32.lib を追加してOKをクリックし、プロジェクトのプロパティもOKをクリックして閉じます。

 

これでビルドしてみたところ、ビルドが通りMacの時と同じようにウィンドウが表示されました。

 

これでWindowsのビルド環境構築が完了です。

opengl32.libがないみたいなエラーが出るときは、Windows Kitsが入ってないからだと思います。いれましょう。

 

 

コミットやプッシュするときの注意点

これでVisual Studioでビルドできるようになったのでコミットしようとしますが、このままコミットするのはゴミファイルがたくさん含まれる他、自分のPC情報までコミットしてしまう可能性があります。

 

正直、今回は以下の3つ以外いらないです。

  • リポジトリ直下のRViz.sln
  • vcproj内のRViz.vcxproj
  • vcproj内のRViz.vcxproj.filters (これはフォルダの振り分けに必須)

 

これ以外のファイルは.gitignoreなどで除外するようにしておけば完璧です。

コミット & プッシュしておきます。

 

 

終わり

意外と長くなってしまいましたが、今日はここまでとなります。

Linuxでのビルドはある程度実装が進んだら書く。

 

ゲームプログラミングC++

ゲームプログラミングC++

Sanjay Madhav
5,060円(05/07 13:38時点)
Amazonの情報を掲載しています
ゲームエンジン・アーキテクチャ 第2版

ゲームエンジン・アーキテクチャ 第2版

ジェイソン・グレゴリー
7,370円(05/07 03:13時点)
Amazonの情報を掲載しています
DirectX 12の魔導書 3Dレンダリングの基礎からMMDモデルを踊らせるまで

DirectX 12の魔導書 3Dレンダリングの基礎からMMDモデルを踊らせるまで

川野 竜一
5,060円(05/07 19:27時点)
Amazonの情報を掲載しています
OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.5 with SPIR-V (English Ed...

OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.5 with SPIR-V (English Ed...

Kessenich, John, Sellers, Graham, Shreiner, Dave
5,295円(05/07 17:58時点)
発売日: 2016/07/25
Amazonの情報を掲載しています

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

SESSIONS や Tokyo Demo Fest 等のイベントを主催してる人
各種最適化やIT・インフラ・3DCGが好き
◆YouTube: http://youtube.com/@FL1NE_
◆X(Twitter): @FL1NE

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次