CMakeでUWP用のプロジェクトを生成してDracoのUnity Native Pluginをビルドする


はじめに

前回の記事では、3Dデータ圧縮ライブラリDracoのUnityネイティブプラグインをHoloLensで実行してみました。DracoのDLLをビルドするのに苦戦したので、今後のために手順をメモしておきます。CMakeを使ってビルドするライブラリをHoloLens(UWP)で利用する場合にも参考になるはずです。

開発・検証環境

Dracoとは

Dracoは、Google が開発している、3Dメッシュと点群データの圧縮/解凍のためのオープンソース・ライブラリです。3Dモデルデータの保存や転送を改善することを目的に開発されています。
https://google.github.io/draco/

DracoのUnity Native Pluginをビルドする

手順

  1. CMakeのインストール
  2. CMakeでVisual Studioのプロジェクトを生成
  3. Visual StudioでDLLのビルドを実行

1. CMakeのインストール(Windows)

https://cmake.org/download/にアクセスしてインストーラーをダウンロードする。ダウンロードしたインストーラーを実行する。

インストーラーでCMakeをPathに追加するように選択する。

インストール終了後、コマンドプロンプトでCMakeのバージョンを確認する。

cmake --version

2. CMakeでUWP用のVisual Studioプロジェクトを生成

Dracoのプロジェクトのルートディレクトリ直下にbuildディレクトリを作成する。

buildディレクトリに移動して、コマンドプロンプトで以下のコマンドを実行する。

cmake .. -G"Visual Studio 15 2017" -D"CMAKE_SYSTEM_NAME=WindowsStore" -D"CMAKE_SYSTEM_VERSION=10.0" -D"CMAKE_SYSTEM_PROCESSOR=x86" -D"BUILD_UNITY_PLUGIN=ON" -D"CMAKE_CXX_FLAGS=/DWIN32 /D_WINDOWS /W2 /DUNICODE /D_UNICODE /GR /EHsc /wd4146"

Visual Studio 2017のソリューションとプロジェクトが生成される。

3. Visual StudioでDLLのビルドを実行

buildディレクトリに生成された「draco.sln」をVisual Studio 2017で開く。

「ビルド->バッチビルド」から「dracodec_unity」のReleaseにチェックを入れて、ビルドを実行する。

ビルドが上手くいくと「build/Release」の直下にDLLファイルが生成されている。

CMakeコマンドのオプションについて

DracoのUnity Native Pluginをビルドするために実行したCMakeコマンド。

cmake .. -G"Visual Studio 15 2017" -D"CMAKE_SYSTEM_NAME=WindowsStore" -D"CMAKE_SYSTEM_VERSION=10.0" -D"CMAKE_SYSTEM_PROCESSOR=x86" -D"BUILD_UNITY_PLUGIN=ON" -D"CMAKE_CXX_FLAGS=/DWIN32 /D_WINDOWS /W2 /DUNICODE /D_UNICODE /GR /EHsc /wd4146"

UWP向けにVisual Studio 2017のプロジェクトを生成するオプション。

-G"Visual Studio 15 2017" -D"CMAKE_SYSTEM_NAME=WindowsStore" -D"CMAKE_SYSTEM_VERSION=10.0"

HoloLens用にDLLをビルドするためにx86を指定するオプション。

-D"CMAKE_SYSTEM_PROCESSOR=x86"

DracoのUnity Native Plugin(DLL)をビルドできるようにするオプション。

-D"BUILD_UNITY_PLUGIN=ON"

ビルド時に発生するコンパイラの警告「C4146」を無視するように設定するオプション。

-D"CMAKE_CXX_FLAGS=/DWIN32 /D_WINDOWS /W2 /DUNICODE /D_UNICODE /GR /EHsc /wd4146"

「/wd4146」以外のフラグは、オプションを指定しない場合でも設定されている値。オプションを指定しない場合にCMAKE_CXX_FLAGSに設定される値は、buildディレクトリに生成されるCMakeCache.txtを見ると確認できる。

オプションでコンパイラの警告「C4146」を無視するように設定しないと、ビルドした時に以下のようにエラーが発生する。

DLLの動作確認

前回の記事で紹介したサンプルプロジェクト「DracoSampleForHoloLens」に含まれているDLLを自分でビルドしたものに置き換えて動作すれば問題ありません。

HoloLens(UWP)用の「dracodec_unity.dll」を「Plugins\WSA\x86」に配置する時の設定は以下の通りです。

実行結果

まとめ

3Dデータ圧縮ライブラリDracoのUnity Native PluginをHoloLensで実行するためにDLLをビルドする手順を紹介しました。CMakeを使ってビルドするライブラリをHoloLens(UWP)で利用する場合の参考になればと思います。

参考情報