2019/04版の記事を公開しています
はじめに
Windows, Visual Studio 2015でのQtとVTK(with Qt)サポートな開発環境構築の記録用メモ.Pythonは3のみを想定.
主にOpenCV, PCL, ついでにTensorFlowが使える環境を構築,ライブラリはC:\lib以下に配置.
1年前の記事 のアップデートです.
昨年引き続き http://unanancyowen.com/pcl181 (PCL 1.8.1) を大いに参考にさせて頂きました.ありがとうございます.
本記事での > 何かコマンド
は,PowerShell上での操作の意味です.
導入するもの
- インストーラー使用
- Visual Studio Community 2015
- Anaconda 5.1 (Python 3.6)
- Git for Windows 2.17.0
- CUDA Toolkit 9.0
- cuDNN 7.0.0 for CUDA 9.0
- CMake 3.11.1
- HDF5 1.10.2
- Microsoft MPI v9.0.1, Microsoft MPI SDK v9.0.1
- OpenNI 2.2.0.33 Beta
- (Ensenso SDK 2.2.65) もし使うなら
- (MATLAB 2017b) もし使うなら
- パッケージマネージャー使用だけどちょっと注意が必要
- TensorFlow 1.7
- ソースから導入
- bzip2 1.0.6 (ソースのみ)
- zlib 1.2.11 (ソースのみ)
- Boost 1.67.0
- Qt 5.10.1
- FreeGLUT 3.0.0
- GLEW 2.1.0
- Eigen 3.3.4
- VTK 8.1.0
- FLANN 1.9.1
- QHull 2015.2 (7.2.0)
- OpenCV 3.4.0
- PCL 1.8.1
- Bullet 2.87
システム構成(参考)
要素 | スペック |
---|---|
CPU | Intel Core i7-6700K |
RAM | 64GB |
OS | Windows 10 Pro (64bit) |
GPU | NVIDIA GeForce GTX 1080 |
導入手順
インストーラ使用
CUDAが最新のVisual Studioに対応していないため(VS2017のUpdateによっては対応しているが面倒),VS2015を使用する.
CUDA, cuDNNはバージョンに注意.TensorFlowがCUDA 9.0, cuDNN 7.0を指定しているため,バージョンを合わせる必要がある.
-
Visual Studio Community 2015
-
Anaconda Anaconda 5.1 (Python 3.6)
- https://www.anaconda.com/download/
- 今回は
C:\Python\Anaconda3
にインストール.
-
Git for Windows 2.17.0
-
CUDA Toolkit 9.0
-
cuDNN 7.0.0 for CUDA 9.0
-
CMake 3.11.1
-
HDF5 1.10.2
- https://www.hdfgroup.org/downloads/hdf5
- ユーザー登録が必要
- 環境変数 %HDF5_ROOT% を C:\Program Files\HDF_Group\HDF5\1.10.2 に設定
-
Microsoft MPI v9.0.1, Microsoft MPI SDK v9.0.1
-
OpenNI 2.2.0.33 Beta
-
(Ensenso SDK 2.2.65) もし使うなら
-
(MATLAB 2017b) もし使うなら
TensorFlow 1.7
(参考: https://www.tensorflow.org/install/install_windows )
-
AnacondaでPython3.5の環境を作る
-
> conda create -n tensorflow pip python=3.5
-
> activate tensorflow
-
> pip install --ignore-installed --upgrade tensorflow-gpu
-
TensorFlowが動作することを確認.まずPythonインタプリタ起動
> python
- インタプリタ上で以下を走らせてみる
> import tensorflow as tf > hello = tf.constant('Hello, TensorFlow!') > sess = tf.Session() > print(sess.run(hello))
b'Hello, TensorFlow!'
が出ていればとりあえずOK.(Ctrl)+Z
で抜ける
bzip2 1.0.6 (ソースのみ)
- C:\lib\bzip2を作成
- http://www.bzip.org/downloads.html からソースをダウンロードしてC:\lib\bzip2\srcに解凍
zlib 1.2.11 (ソースのみ)
- C:\lib\zlibを作成
- http://zlib.net/ からソースをダウンロードしてC:\lib\zlib\srcに解凍
Boost 1.67.0
(参考: https://gist.github.com/UnaNancyOwen/d879a41710e9c05025f8 )
-
C:\lib\Boost\を作成
-
http://www.boost.org/users/download/ からソースをダウンロード,C:\lib\Boost\srcに解凍
-
C:\lib\Boost\srcに移動
-
VS 2015 用 x64 Native Tools コマンド プロンプトを起動,以降はこのプロンプト上で実行
-
> bootstrap.bat
-
project-config.jamに以下を追記
using mpi ;
-
> b2.exe toolset=msvc-14.0 address-model=64 --build-dir="C:/lib/Boost/build" -s BZIP2_SOURCE="C:/lib/bzip2/src" -s ZLIB_SOURCE="C:\lib\zlib\src" -s NO_ZLIB=0 -s NO_BZIP2=0 -j7
(-jで並列数指定,コア数以下に設定すると良さげ.Pythonは自動で見つけてくれるようになったっぽい.) -
> b2.exe toolset=msvc-14.0 address-model=64 --build-dir="C:/lib/Boost/build" install --prefix="C:/lib/Boost/install"
-
TensorFlow環境でも使うため,Python3.5用のBoost.PythonとBoost.Numpyを入れる.project-config.jamの
using mpi ;
を削除し以下を追記 (環境に合わせて適宜パスは変更)
using python : 3.5 : "C:/Python/Anaconda3/envs/tensorflow/python.exe" : "C:/Python/Anaconda3/envs/tensorflow/include" : "C:/Python/Anaconda3/envs/tensorflow/libs" ;
-
> ./b2.exe toolset=msvc-14.0 address-model=64 --build-dir="C:/lib/Boost/build" -j7
-
> ./b2.exe toolset=msvc-14.0 address-model=64 --build-dir="C:/lib/Boost/build" install --prefix="C:/lib/Boost/install"
-
環境変数 %BOOST_ROOT% を C:\lib\Boost\install に設定
Qt 5.10.1
(参考: https://blog.kintarou.com/2016/03/28/bulding_qt/ )
今回はソースから入れましたが,おすすめしません.Qtはバイナリで入れた方が良いと思います
- C:\lib\Qtを作成
- https://www1.qt.io/offline-installers/ からソースをダウンロード,C:\lib\Qt\srcに解凍
- C:\lib\Qt\srcに移動
- VS 2015 用 x64 Native Tools コマンド プロンプトを起動,以降はこのプロンプト上で実行
> configure.bat -developer-build -confirm-license -opensource -nomake examples -nomake tests -opengl desktop -no-warnings-are-errors -prefix "C:/lib/Qt/install" -skip webengine
- どっかからjom.exeを見つけてくる (Qtのバイナリパッケージから拾ってくるのが一番楽).コンパイルが遅くて良ければjomの代わりにnmakeでも良い(らしい,未確認)
> jom
> jom intall
- 環境変数 %QT_DIR% を C:\lib\Qt\install\lib\cmake に設定
- PATH に C:\lib\Qt\install\bin を追加
FreeGLUT 3.0.0
- C:\lib\Freeglutを作成し移動
- http://freeglut.sourceforge.net/ からソースをダウンロード,C:\lib\Freeglut\srcに解凍
- CMake
- src: C:\lib\Freeglut\src
- build: C:\lib\Freeglut\build
- Configure (変更点のみ.各自の環境に合わせて確認する)
- CMAKE_INSTALL_PREFIX: C:/lib/Freeglut/install
- INSTALL_PDB: no
- 環境変数 %GLUT_ROOT_PATH% を C:\lib\Freeglut\install に設定
- PATH に C:\lib\Freeglut\install\bin を追加
GLEW 2.1.0
- C:\lib\GLEWを作成
-
http://glew.sourceforge.net/ からソースをダウンロード,C:\lib\Qt\GLEW\srcに解凍.
GitHubのリポジトリには含まれていないファイルがあるので必ずzipで. - C:\lib\GLEW\srcに移動
- CMake
- src: C:\lib\GLEW\src\build\cmake
- build: C:\lib\GLEW\build
- Configure (変更点のみ.各自の環境に合わせて確認する)
- CMAKE_INSTALL_PREFIX: C:/lib/GLEW/install
- Generate & Open Project
- DebugでALL_BUILD, INSTALLを順にビルド
- ReleaseでALL_BUILD, INSTALLを順にビルド
- 環境変数 %GLEW_ROOT% を C:\lib\GLEW\install に設定
- Pathに C:\lib\GLEW\install\bin を追加
Eigen 3.3.4
(参考: https://gist.github.com/UnaNancyOwen/08e5a9b8f5979ed0077c )
- C:\lib\Eigen\を作成し移動
> git clone https://github.com/eigenteam/eigen-git-mirror.git src
> cd src
> git checkout 3.3.4
- CMake
- src: C:\lib\Eigen\src
- build: C:\lib\Eigen\build
- Configure (変更点のみ.各自の環境に合わせて確認する)
- CMAKE_INSTALL_PREFIX: C:/lib/Eigen/install/
- Generate & Open Project
- DebugでALL_BUILD, INSTALLを順にビルド
- ReleaseでALL_BUILD, INSTALLを順にビルド
- 環境変数 %EIGEN_ROOT% を C:\lib\Eigen\install に設定
VTK 8.1.0
(参考: https://gist.github.com/UnaNancyOwen/9d16060714ba9b28f90e )
- C:\lib\VTK\を作成し移動
> git clone https://github.com/Kitware/VTK.git src
> cd src
> git checkout v8.1.0
- CMake
- src: C:\lib\VTK\src
- build: C:\lib\VTK\build
- Configure (変更点のみ.各自の環境に合わせて確認する)
- CMAKE_DEBUG_POSTFIX: _d
- BUILD_TESTING: no
- CMAKE_CXX_MP_FLAG: yes
- CMAKE_INSTALL_PREFIX: C:/lib/VTK/install
- VTK_GROUP_Qt: yes
- Generate & Open Project
- DebugでALL_BUILD, INSTALLを順にビルド
- ReleaseでALL_BUILD, INSTALLを順にビルド
- 環境変数 %VTK_DIR% を C:\lib\VTK\install に設定
- Pathに C:\lib\VTK\install\bin を追加
FLANN 1.9.1
(参考: https://gist.github.com/UnaNancyOwen/1e3fced09e4430ad0b7b )
- C:\lib\Flann\ を作成し移動
> git clone git://github.com/mariusmuja/flann.git src
> cd src
> git checkout 1.9.1
- CMake
src: C:\lib\Flann\src
build: C:\lib\Flann\build - Configure (変更点のみ.各自の環境に合わせて確認する)
- CMAKE_DEBUG_POSTFIX: _d
- CMAKE_INSTALL_PREFIX: C:/lib/GLEW/install
- BUILD_CUDA_LIB: yes
- BUILD_DOC: no
- BUILD_MATLAB_BINDINGS: no
- BUILD_PYTHON_BINDINGS: no
- BUILD_EXAMPLES: no
- BUILD_TESTS: no
- Generate & Open Project
- DebugでALL_BUILD, INSTALLを順にビルド
- ReleaseでALL_BUILD, INSTALLを順にビルド
- 環境変数 %FLANN_ROOT% を C:\lib\flann\install に設定
- Pathに C:\lib\flann\install\bin を追加
QHull 2015.2 (7.2.0)
(参考: https://gist.github.com/UnaNancyOwen/ffbe6b05ee0101620d3c )
- C:\lib\Qfull\ を作成し移動
> git clone https://github.com/qhull/qhull.git src
> cd src
-
> git checkout 5a79a0009454c86e9848646b3c296009125231bf
これは2015.2 (7.2.0)で,tagなどがないのでHash値で指定 - CMake
- src: C:\lib\Qfull\src
- build: C:\lib\Qfull\build
- Configure (変更点のみ.各自の環境に合わせて確認する)
- CMAKE_DEBUG_POSTFIX: _d
- CMAKE_INSTALL_PREFIX: C:/lib/Qfull/install
- Generate & Open Project
- DebugでALL_BUILD, INSTALLを順にビルド
- ReleaseでALL_BUILD, INSTALLを順にビルド
- 環境変数%QHULL_ROOT%: C:\lib\Qfull\install
- PathにC:\lib\Qfull\install\binを追加
OpenCV 3.4.0
(参考: http://qiita.com/bodyscrap/items/68b38f58f492bc645da5 )
(参考: http://qiita.com/emakryo/items/5e2c79c2a18e60dd212f )
(参考: http://qiita.com/fukushima1981/items/fae7d40123bfdf426624 )
- C:\lib\OpenCV\ を作成し移動
> git clone https://github.com/Itseez/opencv.git src
> cd src
> git checkout 3.4.0
> cd ..
> git clone https://github.com/Itseez/opencv_contrib.git src_contrib
> cd src_contrib
> git checkout 3.4.0
- CMake
- src: C:\lib\OpenCV\src
- build: C:\lib\OpenCV\build
- Configure (変更点のみ.各自の環境に合わせて確認する,CUDA_ARCH_BINはVisual Studio上のNsightからSystem Infoで確認するのが楽)
- CMAKE_INSTALL_PREFIX: C:/lib/OpenCV/install
- CUDA_ARCH_BIN: 6.1
- BUILD_opencv_python3: no
- WITH_QT yes
- HDF5_C_LIBRARY: C:/Program Files/HDF_Group/HDF5/1.10.2/lib/hdf5.lib
- HDF5_INCLUDE_DIRS: C:/Program Files/HDF_Group/HDF5/1.10.2/include
- WITH_OPENNI2: yes
- WITH_OPENGL: yes
- OPENCV_EXTRAMODELUES_PATH: C:/lib/OpenCV/src_contrib/modules
- EIGEN_INCLUDE_PATH: C:/lib/Eigen/install/include/eigen3
- OPENCV_ENABLE_NONFREE: yes
- Generate & Open Project
- DebugでALL_BUILD, INSTALLを順にビルド
- CMakeで再度Configure(Python3のデバッグビルドを持っていないため,Pythonバインディングはリリースのみでビルドする)
- BUILD_opencv_python3: yes
- Generate & Open Project
- ReleaseでALL_BUILD, INSTALLを順にビルド(必要なら管理者権限でVisual Studioを起動)
- 環境変数 %OPENCV_DIR% を C:\lib\OpenCV\install に設定
- Pathに C:\lib\OpenCV\install\bin と C:\lib\OpenCV\install\x64\vc14\bin を追加
PCL 1.8.1
(参考: https://gist.github.com/UnaNancyOwen/59319050d53c137ca8f3)
-
C:\lib\PCL\を作成し移動
-
> git clone https://github.com/PointCloudLibrary/pcl.git src
-
> cd src
-
> git checkout pcl-1.8.1
-
io\src\ensenso_grabber.cppの464行目と509行目の
uint
をunsigned int
に変更 -
visualization\include\pcl\visualization\impl\pcl_visualizer.hppの1431行目,1467行目,1543行目
am_it->second.actor->GetMapper ()->ImmediateModeRenderingOff ();
をそれぞれコメントアウト -
visualization\src\pcl_visualizer.cppの1149行目,1229行目,1543行目
mapper->ImmediateModeRenderingOff ();
をそれぞれコメントアウト -
CMake
- src: C:\lib\PCL\src
- build: C:\lib\PCL\build
-
Configure (変更点のみ.各自の環境に合わせて確認する)
- CMAKE_INSTALL_PREFIX: C:/lib/PCL/install
- FLANN_LIBRARY_DEBUG: C:/lib/Flann/install/lib/flann_cpp_s_d.lib
- BUILD_CUDA: yes
- BUILD_GPU: yes
- BUILD_examples: yes
- BUILD_cuda_apps: yes
- BUILD_cuda_io: yes
- BUILD_gpu_kinfu: yes
- BUILD_gpu_kinfu_large_scale: yes
- BUILD_gpu_surface: yes
- BUILD_gpu_tracking: yes
- CUDA_ARCH_BIN: 6.1
-
Generate & Open Project
-
DebugでALL_BUILD, INSTALLを順にビルド
-
ReleaseでALL_BUILD, INSTALLを順にビルド
-
環境変数 %PCL_ROOT% を C:\lib\PCL\install に設定
-
Pathに C:\lib\PCL\install\bin を追加
Bullet 2.87
- C:\lib\Bullet\を作成し移動
> git clone https://github.com/bulletphysics/bullet3.git src
> cd src
> git checkout 2.87
- CMake
- src: C:\lib\Bullet\src
- build: C:\lib\Bullet\build
- Configure
- CMAKE_INSTALL_PREFIX: C:/lib/Bullet/install
- LIBRARY_OUTPUT_PATH: C:/lib/Bullet/install/lib
- INSTALL_LIBS: yes
- USE_MSVC_RUNTIME_LIBRARY_DLL: yes
- BUILD_BULLET2_DEMOS: no
- BUILD_CPU_DEMOS: no
- BUILD_OPENGL3_DEMOS: no
- BUILD_UNIT_TESTS: no
- Generate & Open Project
- DebugでALL_BUILD, INSTALLを順にビルド
- ReleaseでALL_BUILD, INSTALLを順にビルド
- 環境変数 %BULLET_ROOT% を C:\lib\Bullet\install\lib\cmake に設定
おわりに
一年間でどのライブラリがどれくらい更新されているか分かるので楽しいですね.