オレオレ描画エンジン(?)を作る : 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などを使うといいでしょう。
GLFWのビルド
Mac同様にGLFWの公式サイトからダウンロードして解凍しておきます。
CMakeList.txtがあってVisualStudioのプロジェクトファイルがみつからないのでCMakeで生成し、ビルドします。 (Releaseでビルドします)
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: 未解決の外部シンボル [email protected] が関数 _main で参照されました。 1>main.obj : error LNK2019: 未解決の外部シンボル [email protected] が関数 _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でのビルドはある程度実装が進んだら書く。
ディスカッション
コメント一覧
まだ、コメントがありません