SfMのオープンソースOpenMVGをVisualStudio2015でビルドする方法を紹介します。

・厄介なところ
VS2015だと以下のstdioの互換性問題が発生し、VS2013だとC++11のconstexprに対応していないので、そのままだとVS2015でもVS2013でもビルドできません。
http://stackoverflow.com/questions/30412951/unresolved-external-symbol-imp-fprintf-and-imp-iob-func-sdl2

本記事では、stdio問題への対応を含め、OpenMVGをVS2015でビルドする方法を紹介します。

1. ソースコード入手
以下のページからソースコードを入手します。
それだけだとsrc/dependenciesが空なので、git submodule update -iします。
https://github.com/openMVG/openMVG

2. CMake
警告がたくさん出ますが無視しても大丈夫です。
下手にMOSEKなど必須でないライブラリを使おうとするとバージョン問題でビルドできなかったりするようです。

3. stdio問題対応
samplesとsoftwareの全てのプロジェクトについて以下の対応を行う。

一.
extern "C" { FILE __iob_func[3] = { *stdin,*stdout,*stderr }; }
と書いたヘッダファイルを用意してインクルードする。

二.
legacy_stdio_definition.libをリンクする。


以上で、OpenMVGをVS2015でビルドできるはずです。