Skip to content

Instantly share code, notes, and snippets.

@UnaNancyOwen
Last active May 12, 2021 22:07
Show Gist options
  • Star 11 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save UnaNancyOwen/77d61f9f21376c9b59fc to your computer and use it in GitHub Desktop.
Save UnaNancyOwen/77d61f9f21376c9b59fc to your computer and use it in GitHub Desktop.
Building QVTK with Visual Studio

Building QVTK(VTK6+Qt5) with Visual Studio

Download

  1. VTK 6.3.0(VTK-6.3.0.zip)をダウンロードしてファイルを解凍する。(C:\VTK-6.3.0) http://www.vtk.org/VTK/resources/software.html#latestcand
    https://github.com/Kitware/VTK/tree/v6.3.0

  2. 以下の手順を参考にQt 5.5.1(qt-everywhere-opensource-src-5.5.1.zip)をビルドする。   https://gist.github.com/UnaNancyOwen/dbc0506332caeb906c14

CMake

  1. Qt 5.5以降はQtWebKitが非推奨となり、Qt 5.6からは削除されます。
    そのため、VTKの以下のフォルダを削除します。
    * VTK 6.3.0ではこの手順が必要ですが、以降のバージョンでは不要になる可能性があります。

    • VTK-6.3.0\GUISupport\QtWebkit
  2. ソースコードの入力先とソリューションファイルの出力先を指定する。

    • Where is the source code: C:\VTK-6.3.0
    • Where is build the binaries: C:\VTK-6.3.0\build
  3. [Configure]を押してターゲットとなるVisual Studioを選択する。

  4. 各種設定を行う。
    (GroupedとAdvancedにチェックを入れるとわかりやすい。)
    Ungrouped Entries

    • QT_QMAKE_EXECUTABLE C:/Program Files/Qt/bin/qmake.exe
    • Qt5_DIR C:/Program Files/Qt/lib/cmake/Qt5
    • Qt5Core_DIR C:/Program Files/Qt/lib/cmake/Qt5Core
    • Qt5Designer_DIR C:/Program Files/Qt/lib/cmake/Qt5Designer
    • Qt5Gui_DIR C:/Program Files/Qt/lib/cmake/Qt5Gui
    • Qt5OpenGL_DIR C:/Program Files/Qt/lib/cmake/Qt5OpenGL
    • Qt5Sql_DIR C:/Program Files/Qt/lib/cmake/Qt5Sql
    • Qt5UiPlugin_DIR C:/Program Files/Qt/lib/cmake/Qt5UiPlugin
    • Qt5Widgets_DIR C:/Program Files/Qt/lib/cmake/Qt5Widgets
    • Qt5Xml_DIR C:/Program Files/Qt/lib/cmake/Qt5Xml
    • VTK_INSTALL_QT_PLUGIN_DIR ${CMAKE_INSTALL_PREFIX}/${VTK_INSTALL_QT_DIR}

    BUILD

    • BUILD_SHAREED_LIBS ☐ (cunheck)
    • BUILD_TESTING ☐ (uncheck)

    CMAKE

    • CMAKE_CONFIGURATION_TYPES Debug;Release
    • CMAKE_CXX_MP_FLAG ☑ (check)
    • CMAKE_INSTALL_PREFIX C:\Program Files\VTK (or C:\Program Files (x86)\VTK)

    Module
    * VTK/VTK_Group_Qtにチェックを入れるとまとめて指定される。

    • Module_vtkGUISupportQt ☑ (check)
    • Module_vtkGUISupportQtOpenGL ☑ (check)
    • Module_vtkGUISupportQtSQL ☑ (check)
    • Module_vtkRenderingQt ☑ (check)
    • Module_vtkViewsQt ☑ (check)

    OPENGL

    • OPENGL_gl_LIBRARY opengl
    • OPENGL_glu_LIBRARY glu32

    VTK

    • VTK_Group_Qt ☑ (check)
    • VTK_INSTALL_QT_PLUGIN_DIR ${CMAKE_INSTALL_PREFIX}/${VTK_INSTALL_QT_DIR}
    • VTK_QT_VERSION 5
  5. [Add Entry]を押して以下の設定を追加する。

    Name: CMAKE_DEBUG_POSTFIX
    Type: STRING
    Value: -gd
    Description:
    * Debugビルドの生成ファイルのファイル名(最後尾)に付加する文字列。
  6. [Generate]を押してソリューションファイルを出力する。

Build

  1. Visual Studioを管理者権限で起動してVTKのソリューションファイル(C:\VTK-6.3.0\build\VTK.sln)を開く。
    (Visual Studioを管理者権限で起動しないとINSTALLが失敗する。)

  2. VTKをビルドする。(ALL_BUILD)

    1. ソリューションの構成(Debug, Release)を設定する。
    2. ソリューションエクスプローラーからALL_BUILDプロジェクトを選択する。
    3. [ビルド]>[ソリューションのビルド]を押してVTKをビルドする。
  3. VTKをインストールする。(INSTALL)

    1. 以下のファイルを修正する。
      • build\GUISupport\Qt\PluginInstall.cmake
        5 line
      IF(BUILD_TYPE MATCHES Debug)
        SET(VTK_INSTALL_QT_PLUGIN_FILE "QVTKWidgetPlugin-gd.dll")
      ELSE()
        SET(VTK_INSTALL_QT_PLUGIN_FILE "QVTKWidgetPlugin.dll")
      ENDIF()
      
    2. ソリューションエクスプローラーからINSTALLプロジェクトを選択する。
    3. [ビルド]>[プロジェクトのみ]>[INSTALLのみをビルド]を押してVTKをインストールする。
      CMAKE_INSTALL_PREFIXで指定した出力先へ必要なファイルがコピーされる。

Environment Variable

  1. 環境変数VTK_DIRを作成してVTKのパス(C:\Program Files\VTK)を設定する。

  2. 環境変数QTDIRを作成してQtのパス(C:\Program Files\Qt (or C:\Program Files (x86)\Qt))を設定する。

  3. 環境変数Pathに;%VTK_DIR%\bin;%QTDIR%\binを追加する。

Building QVTK(VTK7+Qt5) with Visual Studio

Download

  1. VTK 7.1.0(VTK-7.1.0.zip)をダウンロードしてファイルを解凍する。(C:\VTK-7.1.0) http://www.vtk.org/VTK/resources/software.html#latestcand
    https://github.com/Kitware/VTK/tree/v7.1.0

  2. Qt 5.8.0(qt-opensource-windows-x86-msvc2015_64-5.8.0.exe)をダウンロードしてインストールする。(C:\Qt\Qt 5.8.0)   https://www.qt.io/download-open-source/

CMake

  1. ソースコードの入力先とソリューションファイルの出力先を指定する。

    • Where is the source code: C:\VTK-7.1.0
    • Where is build the binaries: C:\VTK-7.1.0\build
  2. [Configure]を押してターゲットとなるVisual Studioを選択する。

  3. 各種設定を行う。
    (GroupedとAdvancedにチェックを入れるとわかりやすい。)
    Ungrouped Entries

    • QT_QMAKE_EXECUTABLE C:/Qt/Qt5.8.0/5.8/msvc2015_64/bin/qmake.exe (or C:/Qt/Qt5.8.0/5.8/msvc2015/bin/qmake.exe)
    • Qt5_DIR C:/Qt/Qt5.8.0/5.8/msvc2015_64/lib/cmake/Qt5 (or C:/Qt/Qt5.8.0/5.8/msvc2015/lib/cmake/Qt5)
    • Qt5Core_DIR C:/Qt/Qt5.8.0/5.8/msvc2015_64/lib/cmake/Qt5Core (or C:/Qt/Qt5.8.0/5.8/msvc2015/lib/cmake/Qt5Core)
    • Qt5Gui_DIR C:/Qt/Qt5.8.0/5.8/msvc2015_64/lib/cmake/Qt5Gui (or C:/Qt/Qt5.8.0/5.8/msvc2015/lib/cmake/Qt5Gui)
    • Qt5OpenGL_DIR C:/Qt/Qt5.8.0/5.8/msvc2015_64/lib/cmake/Qt5OpenGL (or C:/Qt/Qt5.8.0/5.8/msvc2015/lib/cmake/Qt5OpenGL)
    • Qt5Sql_DIR C:/Qt/Qt5.8.0/5.8/msvc2015_64/lib/cmake/Qt5Sql (or C:/Qt/Qt5.8.0/5.8/msvc2015/lib/cmake/Qt5Sql)
    • Qt5Widgets_DIR C:/Qt/Qt5.8.0/5.8/msvc2015_64/lib/cmake/Qt5Widgets (or C:/Qt/Qt5.8.0/5.8/msvc2015/lib/cmake/Qt5Widgets)

    BUILD

    • BUILD_SHAREED_LIBS ☐ (cunheck)
    • BUILD_TESTING ☐ (uncheck)

    CMAKE

    • CMAKE_CONFIGURATION_TYPES Debug;Release
    • CMAKE_CXX_MP_FLAG ☑ (check)
    • CMAKE_INSTALL_PREFIX C:\Program Files\VTK (or C:\Program Files (x86)\VTK)

    OPENGL

    • OPENGL_gl_LIBRARY opengl
    • OPENGL_glu_LIBRARY glu32

    VTK

    • VTK_Group_Qt ☑ (check)
    • VTK_QT_VERSION 5
    • VTK_RENDERING_BACKEND OpenGL
  4. [Add Entry]を押して以下の設定を追加する。

    Name: CMAKE_DEBUG_POSTFIX
    Type: STRING
    Value: -gd
    Description:
    * Debugビルドの生成ファイルのファイル名(最後尾)に付加する文字列。
  5. [Generate]を押してソリューションファイルを出力する。

Build

  1. Visual Studioを管理者権限で起動してVTKのソリューションファイル(C:\VTK-7.1.0\build\VTK.sln)を開く。
    (Visual Studioを管理者権限で起動しないとINSTALLが失敗する。)

  2. VTKをビルドする。(ALL_BUILD)

    1. ソリューションの構成(Debug, Release)を設定する。
    2. ソリューションエクスプローラーからALL_BUILDプロジェクトを選択する。
    3. [ビルド]>[ソリューションのビルド]を押してVTKをビルドする。
  3. VTKをインストールする。(INSTALL)

    1. ソリューションエクスプローラーからINSTALLプロジェクトを選択する。
    2. [ビルド]>[プロジェクトのみ]>[INSTALLのみをビルド]を押してVTKをインストールする。
      CMAKE_INSTALL_PREFIXで指定した出力先へ必要なファイルがコピーされる。

QVTKWidgetPlugin

QVTKWidgetPluginは静的リンクライブラリを生成する設定の場合にはプロジェクトが生成されません。
一時的に動的リンクライブラリを生成する設定でソリューションファイルを出力、QVTKWidgetPluginを生成します。   (QVTKWidgetPlugin以外のライブラリは静的リンクライブラリでも構いません。)

  1. CMakeでBUILD_SHAREED_LIBSにチェックを入れてプロジェクトを生成する。  

  2. VTKのソリューションファイル(C:\VTK-7.1.0\build\VTK.sln)を開く。

  3. QVTKWidgetPluginのプロジェクトのみRelease構成でビルドする。
    ビルドが成功すると以下の場所にQVTKWidgetPluginが生成される。

    • C:\VTK-7.1.0\build\bin\Release\QVTKWidgetPlugin.dll
    • C:\VTK-7.1.0\build\lib\Release\QVTKWidgetPlugin.lib
  4. QVTKWidgetPluginを以下の場所にコピーする。

    • C:\Qt\Qt5.8.0\5.8\msvc2015_64\plugins\designer

Environment Variable

  1. 環境変数VTK_DIRを作成してVTKのパス(C:\Program Files\VTK)を設定する。

  2. 環境変数QTDIRを作成してQtのパス(C:\Qt\Qt5.8.0\5.8\msvc2015_64 (or C:\Qt\Qt5.8.0\5.8\msvc2015))を設定する。

  3. 環境変数Pathに;%QTDIR%\binを追加する。

@huatson
Copy link

huatson commented May 24, 2017

tried to build QT5.8.0 with VTK7.1.0, followed all the steps, once i check on Cmake build libraries, described QVTKWidgetPlugin step1, re-open the VTK solution, and files (dll, lib), they wont appear on the described paths, so i asume that i got to build that QVTKWidgetPlugin project on Release, after that i got the following error (build/rebuild project):

Qt5Widgets.lib(Qt5Widgets.dll) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'

with VS2015.
Win10.

thank you !!!!

Edit: Fixed

Solution : Wrong enviroment on CMake, was using VS 2015 instead VS 2015 x64

@Sanjine
Copy link

Sanjine commented Aug 16, 2017

Thank you very much for posting clear instructions on how to build VTK with Qt. I am installing Point Cloud Library (PCL 1.8.1) and I get mismatch errors in Visual Studio 2015 when building in debug and release mode (after building and installing all the dependencies, including VTK with Qt). Here are a couple of example errors:

Error LNK2038 mismatch detected for 'RuntimeLibrary': value 'MDd_DynamicDebug' doesn't match value 'MD_DynamicRelease' in hdl_viewer_simple.obj pcl_hdl_viewer_simple C:\PCL\PCL-1.8.1\build\visualization\tools\vtkRenderingContextOpenGL2-7.1-gd.lib(vtkRenderingContextOpenGL2ObjectFactory.obj) 1

Error LNK2038 mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in outofcore_viewer.obj pcl_outofcore_viewer C:\PCL\PCL-1.8.1\build\outofcore\tools\vtkInteractionStyle-7.1-gd.lib(vtkInteractionStyleObjectFactory.obj) 1

Any help is greatly appreciated.

@xiaoxie5002
Copy link

Why OPENGL_gl_LIBRARY == opengl , not opengl32???

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment