Yes Second Life

セカンドライフに早9年、現役セカンドライファーの考えてること

セカンドライフビューワ改造への道 - 開発環境構築編

この記事はセカンドライフ技術系アドベントカレンダー2018向けの記事です。

セカンドライフ技術系 Advent Calendar 2018 - Adventar

最近C++ができるようになってきたので今回はセカンドライフビューワの改造に挑戦。まずはVisualStudioで開発環境を整えるところまでやっていきます。ちなみに今は64bit版のビューワもありますが、とりあえず32bit版を改造します。

もろもろインストール

少し情報が古いですが、Visual Studio 2013 Viewer Builds - Second Life Wikiを参考にすると、色々インストールする必要があるみたいです。

あまり、環境を汚したくなかったので仮想マシン上で開発していくことにします。以下のリンクから有効期限付きの評価版Windows10のVMがダウンロードできます。

Windows 10 仮想マシンをダウンロードする - Windows アプリ開発

f:id:sabro:20181203004654p:plain

このVMには最初からVisualStudio2017、Windows Subsystem for Linuxがインストールされています。VMを立ち上げたら、まずは色々インストールしていきましょう。

Visual Studio 2013

VMにはVisualStudio2017が入っているのですが、なぜかビルドが通らず・・。ここで2,3日費やした後、2017はアンインストールしWikiの説明にあるVisualStudio2013をインストールしたらあっさりビルドできました。2013は、無料のVisual Studio Dev Essentialsプログラムに参加した後、以下のリンクからダウンロードできました。

以前の Visual Studio ソフトウェアのダウンロード | Visual Studio - Visual Studio

DirectX SDK

以下のリンクからインストーラをダウンロードし、管理者権限で実行。HeaderとLib以外は不要なのでチェックをはずします。

Download DirectX Software Development Kit from Official Microsoft Download Center

f:id:sabro:20181203004424p:plain

CMake

以下のリンクからインストーラをダウンロード。32bit版でないといけないので注意です。インストールオプションで"Add CMake to the system PATH for all users"を選択します。

Download | CMake

f:id:sabro:20181203004502p:plain

Cygwin

Windows Subsystem for Linuxが入っているので不要かと思ったのですが、ビルド時にパスをCygwin向けに変換しているところがあって、やっぱり駄目でした。Cygwinは以下のリンクからダウンロード。こちらは64bit版を選択します。インストーラを管理者権限で実行し、パッケージ選択画面では、「Devel/patch」を追加します。

Cygwin Installation

f:id:sabro:20181203004539p:plain

Python

実はVMには最初からPython3が入っているのですが、ビルドに使用するのは2系のようなのでPython3はアンインストールし、Python2の最新を入れました。こちらは32bit版でないといけないので注意です。インストールオプションでは"Add python.exe to Path"を"Will be installed on local hard drive"に設定します。

Download Python | Python.org

f:id:sabro:20181203004622p:plain

Mercurial

ビューワのソースコードはBitbacketで管理されているのでMercurialで取得します。コマンドラインでhgが使えればいいので、TortoiseHgは不要です。

Download - Mercurial

Autobuild

 AutobuildはPythonで書かれています。Pythonのパッケージ管理ツールpipを使ってインストールします。Windowsコマンドプロンプトで以下を入力すればOKです。

pip install hg+http://bitbucket.org/lindenlab/autobuild-1.1#egg=autobuild

ビルド変数の設定

ここからは、Cygwinコンソール上での作業になります。さて、ビューワのソースコードとは別にビルド変数を設定するツールが用意されています。

lindenlab / viewer-build-variables — Bitbucket

上記リンクからツールをダウンロードして解凍し、その中にある「variables」ファイルのパスを環境変数に設定します。Cygwin形式ではなくWindows形式のパスで指定する必要があることに注意。ここで結構ハマりました・・・。

export AUTOBUILD_VARIABLES_FILE="C:\Users\user\dev\lindenlab-viewer-build-variables\variables"

ビューワのビルド 

作業ディレクトリに移動して、以下のコマンドでビューワのソースコードを取得します。

hg clone https://bitbucket.org/lindenlab/viewer-release

Cloneが終わったらトップフォルダに移動し、autobuildで環境変数の設定をします。

cd viewer-release
eval "$(autobuild source_environment)"

次はautobuildでコンフィグレーションを実行します。これが完了すると、ソリューションファイルが作成されます。「RelWithDebInfoOS」はビルド構成です。Debugビルドはうまく動かないみたいなのでこれにしました。「32」は32bitの指定です。

autobuild configure -c RelWithDebInfoOS -A 32

これでビルドの準備が整いました。作成されたソリューションファイルでプロジェクトを開いてビルドするか、もしくは以下のコマンドでビルドできます。

autobuild build --no-configure  -c  RelWithDebInfo -A 32

これで開発環境の構築は完了です。ハマりまくってまだ環境構築しかできてないので実際の改造はこれからやります( ̄□  ̄ ||