Skip to content

Instantly share code, notes, and snippets.

@UnaNancyOwen
Last active August 2, 2024 05:42
Show Gist options
  • 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を追加する。

Building QVTK(VTK9+Qt5) with Visual Studio

Download

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

  2. 以下のマージリクエストの修正を取り込む。

  3. Qt 5.15.2をQt Online Installer(qt-online-installer-windows-x64-4.8.0.exe)をダウンロードしてインストールする。(C:\Qt\Qt 5.15.2)   https://www.qt.io/download-open-source/

CMake

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

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

  3. 各種設定を行う。
    Ungrouped Entries

    • BUILD_SHAREED_LIBS ☑ (check)
    • QMLPLUGINDUMP_EXECUTABLE C:/Qt/5.15.2/msvc2019_64/bin/qmlplugindump.exe
    • Qt5_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5
    • Qt5Core_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Core
    • Qt5Gui_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Gui
    • Qt5Network_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Network
    • Qt5OpenGL_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5OpenGL
    • Qt5Qml_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Qml
    • Qt5QmlModels_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5QmlModels
    • Qt5Quick_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Quick
    • Qt5Sql_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Sql
    • Qt5Widgets_DIR C:/Qt/5.15.2/msvc2019_64/lib/cmake/Qt5Widgets

    CMAKE

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

    VTK

    • VTK_BUILD_TESTING OFF
    • VTK_GROUP_ENABLE_Qt YES
    • VTK_MODULE_ENABLE_VTK_GUISupportQt YES
    • VTK_MODULE_ENABLE_VTK_GUISupportQtQuick YES
    • VTK_MODULE_ENABLE_VTK_GUISupportQtSQL YES
    • VTK_MODULE_ENABLE_VTK_RenderingQt YES
    • VTK_MODULE_ENABLE_VTK_ViewsQt YES
    • VTK_QT_VERSION 5
  4. [Add Entry]を押して以下の設定を追加する。

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

Build

  1. Visual Studioを管理者権限で起動してVTKのソリューションファイル(C:\VTK-9.3.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で指定した出力先へ必要なファイルがコピーされる。

Environment Variable

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

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

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

Building QVTK(VTK9+Qt6) with Visual Studio

Download

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

  2. 以下のマージリクエストの修正を取り込む。

  3. Qt 6.7.2をQt Online Installer(qt-online-installer-windows-x64-4.8.0.exe)をダウンロードしてインストールする。(C:\Qt\Qt 6.7.2)   https://www.qt.io/download-open-source/

CMake

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

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

  3. 各種設定を行う。
    Ungrouped Entries

    • BUILD_SHAREED_LIBS ☑ (check)
    • QMLPLUGINDUMP_EXECUTABLE C:/Qt/6.7.2/msvc2019_64/bin/qmlplugindump.exe
    • Qt6_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6
    • Qt6Core_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6Core
    • Qt6CoreTools_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6CoreTools
    • Qt6EntryPointPrivate_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6EntryPointPrivate
    • Qt6Gui_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6Gui
    • Qt6GuiTools_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6GuiTools
    • Qt6Network_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6Network
    • Qt6OpenGL_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6OpenGL
    • Qt6OpenGLWidgets_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6OpenGLWidgets
    • Qt6Qml_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6Qml
    • Qt6QmlBuiltins_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6QmlBuiltins
    • Qt6QmlCompilerPlusPrivate_DIR Qt6QmlCompilerPlusPrivate_DIR-NOTFOUND
    • Qt6QmlIntegration_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6QmlIntegration
    • Qt6QmlModels_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6QmlModels
    • Qt6QmlTools_DIR C:\Qt\6.7.2\msvc2019_64\lib\cmake\Qt6QmlTools
    • Qt6Quick_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6Quick
    • Qt6QuickTools_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6QuickTools
    • Qt6Sql_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6Sql
    • Qt6Widgets_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6Widgets
    • Qt6WidgetsTools_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6WidgetsTools
    • Qt6ZlibPrivate_DIR C:/Qt/6.7.2/msvc2019_64/lib/cmake/Qt6ZlibPrivate
    • WINDEPLOYQT_EXECUTABLE C:/Qt/6.7.2/msvc2019_64/bin/windeployqt.exe

    CMAKE

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

    *QT

    • QT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH
    • QT_ADDITIONAL_HOST_PACKAGES_PREFIX_PATH

    VTK

    • VTK_BUILD_TESTING OFF
    • VTK_GROUP_ENABLE_Qt YES
    • VTK_MODULE_ENABLE_VTK_GUISupportQt YES
    • VTK_MODULE_ENABLE_VTK_GUISupportQtQuick YES
    • VTK_MODULE_ENABLE_VTK_GUISupportQtSQL YES
    • VTK_MODULE_ENABLE_VTK_RenderingQt YES
    • VTK_MODULE_ENABLE_VTK_ViewsQt YES
    • VTK_QT_VERSION Auto
  4. [Add Entry]を押して以下の設定を追加する。

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

Build

  1. Visual Studioを管理者権限で起動してVTKのソリューションファイル(C:\VTK-9.3.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で指定した出力先へ必要なファイルがコピーされる。

Environment Variable

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

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

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

@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