您的位置:首页 > 编程语言 > Qt开发

VS2012编译安装VTK-6.2.0_支持Qt5.2.1

2015-04-23 08:59 639 查看
计算机系统:Win8.1

CPU:i5-5200

1 ExternalData

关于VTK-6.2.0的编译安装,其实和VTK-5.10.1大致相同(VS2012编译安装VTK-5.10.1_支持python),主要区别在于外部数据的使用。下图是VTK官网上6.2.0版本的数据文件:



由上图可见,主要有2种数据文件VTKData和VTKLargeData,解压可见其目录结构为

----.ExternalData

|--MD5

|--README.rst

其中,MD5目录中大约包含2000个如下文件



经过查看发现,上面的并非什么数据文件。查看README.rst,其内容如下

.ExternalData
=============

The VTK ``.ExternalData`` directory is an object store for the
CMake ExternalData module that VTK uses to manage test input
and baseline data.

这么说,编译之后是不是会将相关的数据文件保存到这目录中?经过测试发现,也不是!有可能是这些文件的使用方法不对。那么这些文件应该如何使用呢?

1.1 ExternalData_URL_TEMPLATES

使用cmake对VTK-6.2.0进行配置时,有一个ExternalData_URL_TEMPLATES项(参考资料[4]对ExternalData和ExternalData_URL_TEMPLATES都有说明),其说明如下图所示:



从《URL》可以了解到,上图的file:///var/bigharddrive/%(algo)/%(hash)是一种URL格式。由于我将VTKData.zip加压在目录目录中,其中的.ExternalData目录的结构在上面已经有说明。因此将ExternalData_URL_TEMPLATES的值设为:

file:///E:/VTK/VTKData-6.2.0/VTK-6.2.0/.ExternalData/%(algo)/%(hash)

本来以为在编译过程中,编译器(VS2012)会根据.ExternalData文件的内容来i通过网络获取真正的数据,后来我发现我错了!其实上述.ExternalData/MD5目录中的各个文件就是真正的数据,只不过都以其MD5值来命名而已!例如为文件00d368a21ef258f1658767a93419d0bc添加后缀.png,然后使用图片浏览器打开可见:



注意:并非每个文件都可以通过添加后缀.png然后用图片浏览器打开,只有那些内容为.png格式的文件才可以。可以通过使用二进制阅读器查看文件内容是否以.PNG开头,如果是就很大程度上表面它是一个png格式的图像文件。

因此,在配置VTK-6.2.0时,ExternalData_URL_TEMPLATES可以不设置,不用考虑数据的问题。

由于所有数据文件都是通过其MD5值来命名的,因此使用起来不方便,具体使用方法可见《VTKData-6.2.0的使用方法》。

1.2 VTK_DATA_STORE



2 OpenGL

关于Qt的支持,见参考资料[1]。

一开始时,使用qt-opensource-windows-x86-msvc2012_64-5.2.1.exe,编译失败。后来发现需要OpenGL的支持,改用qt-opensource-windows-x86-msvc2012_64_opengl-5.2.1.exe就好!

3 CMAKE_PREFIX_PATH

在参考资料[1]中提示,使用cmake对VTK进行配置时,需要添加CMAKE_PREFIX_PATH,由于不知其作用,并且觉没有这个必要,因此没有添加,结果编译阶段提示错误:

-- Configuring incomplete, errors occurred!
127>  See also "D:/VTK/build_Qt/CMakeFiles/CMakeOutput.log".
127>  See also "D:/VTK/build_Qt/CMakeFiles/CMakeError.log".
129>  CMake Error at GUISupport/Qt/CMakeLists.txt:58 (find_package):
129>    By not providing "FindQt5Widgets.cmake" in CMAKE_MODULE_PATH this project
129>    has asked CMake to find a package configuration file provided by
129>    "Qt5Widgets", but CMake did not find one.
129>  
129>    Could not find a package configuration file provided by "Qt5Widgets" with
129>    any of the following names:
129>  
129>      Qt5WidgetsConfig.cmake
129>      qt5widgets-config.cmake
129>  
129>    Add the installation prefix of "Qt5Widgets" to CMAKE_PREFIX_PATH or set
129>    "Qt5Widgets_DIR" to a directory containing one of the above files.  If
129>    "Qt5Widgets" provides a separate development package or SDK, be sure it has
129>    been installed.

再次使用cmake配置时,也提示

CMake Error at GUISupport/Qt/CMakeLists.txt:58 (find_package):
  By not providing "FindQt5Widgets.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "Qt5Widgets", but CMake did not find one.

  Could not find a package configuration file provided by "Qt5Widgets" with
  any of the following names:

    Qt5WidgetsConfig.cmake
    qt5widgets-config.cmake

  Add the installation prefix of "Qt5Widgets" to CMAKE_PREFIX_PATH or set
  "Qt5Widgets_DIR" to a directory containing one of the above files.  If
  "Qt5Widgets" provides a separate development package or SDK, be sure it has
  been installed.

看来,不添加是不行的了,因此按照参考资料[1]的方法,点击cmake界面坐上角的“Add Entry”按钮,添加CMAKE_PREFIX_PATH选项



注意:另外一个解决方法就是,将Qt库的路径添加到系统环境变量PATH中即可,见《VS2013编译安装VTK-6.2.0_支持Qt5.4.2》。

4 Qt5Gui_glu32_LIBRAYRY

解决了第3章的问题后,配置过程中又出现了新问题:



CMake Error at C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:16 (message):
  Failed to find "glu32" in "" with CMAKE_CXX_LIBRARY_ARCHITECTURE "".
Call Stack (most recent call first):
  C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:52 (_qt5gui_find_extra_libs)
  C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfig.cmake:152 (include)
  C:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake:94 (find_package)
  GUISupport/Qt/CMakeLists.txt:58 (find_package)

根据参考资料[2]的提示,需添加CMAKE_PREFIX_PATH(第3章中已经将此项的值设为Qt的安装路径)的值:

C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64


照着参考资料[2]的方法设置后,发现第4章的问题是解决了,但是第3章的问题又出现了!

于是将CMAKE_PREFIX_PATH的值同时设为第3章设置的值和C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x64,两者之间用分号隔开(就像环境变量Path中各个变量的分隔一样)。

其实根据参考资料[2]的提示,可以将第3章的值设置为环境变量Path的值即可,无需都在CMAKE_PREFIX_PATH中设置(未经测试)。

因此可以猜测CMAKE_PREFIX_PATH指定的是库的路径,相当于环境变量的作用。

参考资料

[1]VTK/Configure and Build

[2]QT5.2.1+VTK6.1 配置

[3]VTK/Tutorials/QtSetup

[4]CMake 2.8.11 Docs

[5]MSVC2012+QT5.2.1+VTK6.1+win8

[6]VTK/Building/Windows

[7]Solution to Failed to find "glu32" in "" with CMAKE_CXX_LIBRARY_ARCHITECTURE ""
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: