VTK安装 win10+VS2017+VTK8.1.2+QT5.12编译安装

一、前言

作为一个之前没接触过VS、没学过编译原理、没写过大型程序的三无萌新,在安装编译vtk(visualization toolkit)的过程中走了不少弯路,网上找到的很多教程要么版本太旧,要么不够完整,略过了前期环境搭建,而这一阶段出现的问题很可能对后续的编译安装产生影响,因此写下这篇博客以供和我一样的新手参考。本文要实现的任务是从一台空白的win10电脑开始,最后自己写出一个vtk小程序并运行。分为以下几个部分(所有软件版本均为截止2018.11.23最新):

  •        安装Visual Studio
  •        安装QT
  •        安装Cmake
  •        编译安装vtk
  •        第一个vtk程序

二、安装Visual Studio

VS是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.Net Core、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。——百度百科

之前只用过vc++和dev c++的我看到这段介绍时着实有点害怕,事实上vs确实功能强大到无法想象,但它扮演的是集大成者的角色,我们作为普通的码农码畜只需要根据自己的工作或学习需要选择适合的开发包就可以了,想要包揽软件的完整开发流程可不是一两天的工夫。下面进入正题。

首先,到vs官网(www.visualstudio.com)下载安装工具,对于初学者来说,社区版(Community)完全够用了。

进入安装程序之后开始选择套件,如果你和博主一样是为了在这个环境下使用vtk进行图像处理(还在初学阶段)而不进行其他开发,那么只需要选择“使用C++的桌面开发”就可以了。选择好套件之后选择位置进行安装,需要注意一点的是即使你选择安装在非系统盘,还是有一部分文件必要占用系统盘,安装之前看清楚自己系统盘的余量。

安装好之后进行测试,测试IDE那必然从hello,world开始。打开visual studio 2017,文件-新建-项目,弹出下面这个窗口,选择windows桌面向导,在下一个窗口中选择控制台应用程序(.exe),并勾上空项目。

接下来在新建的工程里右键点击源文件,添加新建项 ,然后选择C++文件,点击添加。

 

接下来输入信仰代码,点击上方“本地windows调试器”或者按Ctrl+F5就可以运行得到hello,world了,至此,vs的基本安装与调试就完成了。

#include<iostream>
using namespace std;

int main()
{
	cout << "Hello world" << endl;
	return 0;
}

 

 三、安装QT

QT是一个跨平台C++图形用户界面应用程序开发框架,易扩展,可以嵌入vs进行开发使用,使用vtk开发时可能会用到QT进行GUI开发,因此建议在安装vtk时同时结合QT框架。

QT的下载地址比较迷,官网首页上直接点download只会让你注册账号并且不给版本选择的权利,这里建议大家在http://download.qt.io/archive/qt/下载,有各个版本可以选择,这里我选择最新的5.11/5.11.2,可以看到下面这个列表。

 选择可执行程序qt-opensource-windows-x86-5.11.2.exe,这个版本更加适合新手,和普通的软件是相似的安装方法,到了选择组件的界面,选择MSVC2017 64-bit,和自己的VS版本相对应,其他组件按需添加,如果是初学者,可以不用添加。

接下来比较重要的一步是把QT加入环境变量,右击计算机-属性,点击高级系统设置-环境变量。

 

 接下来选择系统变量中的Path,点击编辑,然后浏览,定位到qt所在路径下的msvc2017_64\bin文件夹,点确定。

接着我们在VS中安装QT扩展插件,打开VS,选择工具-扩展和更新,选择联机,搜索QT,找到QT Visual Studio Tools下载并安装。(下载完成后退出VS自动开始安装)

 

 安装完成后再打开VS,就可以看到上面一排按钮中多了一个QT vs Tools,点击选择qt options,再add你电脑中qt的安装目录下的msvc2017_64路径就可以了,接下来点击qt vs tools下的Launch Qt Designer,如果出现界面让你创建工程,说明插件安装完成。

四、安装Cmake

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

进入Cmake下载网页https://cmake.org/download/,可以看到很多版本,我们选择最新的3.13.0,在文件列表中,我们选择最便于安装的msi,如下图所示。

安装过程中会提醒是否要添加环境变量,我们选择添加到系统变量(for all users),这样就省去了手动添加环境变量的步骤。安装完成后可以看到Cmake(cmake-gui)桌面图标,打开它,如果显示类似下图窗口,说明安装完成。

 五、编译安装vtk

接下来终于等到了主角vtk登场,我们首先到vtk官网上下载(https://www.vtk.org/download/),找到最新稳定版本(the latest),其中Source类别下的VTK-8.1.2.zip是必须要下载的,下面Data栏目中是示例程序中要用到的数据,如果打算跟着官方示例学习就下载,如果没这个打算就可不用。

下载完成后解压缩到一个文件夹下(如果下载了Data,一起解压缩就可以) 。

接下来打开Cmake,首先要选择两个路径,第一个是指源文件所在路径,第二是指编译生成的文件路径,我们第一个路径选择VTK-8.1.2文件夹,注意解压缩过程中可能会产生几层文件夹,我们选择打开后直接有CmakeLists.txt这个文件的路径。第二路径随便自己选择,不用单独去建立,如果这个路径不存在后面会提示是否要建立,点是就可以了。下面两个备选框Grouped和Advanced,推荐勾上Grouped,这样出现选项时会分类呈现,更加清晰,置于Advanced可选可不选,会有更复杂的选项,我们这里没有必要勾选。

接下来点击左下角的Configure,刚刚提到如果生成路径不存在就会提示你创建,选择同意就可以了,接下来需要等上5分钟左右,之后会看到界面满是红色,这代表Cmake程序按照指定的CmakeLists.txt文件进行编译后,有很多内容需要进行确认,备选的项目很多,大多数我们保持默认选项就可以,我们着重注意以下几个:

  • BUILD_EXAMPLES 如果想学习官方示例程序,那么就勾选上
  • CMAKE_INSTALL_PREFIX 这个表示vtk最后生成的链接库的位置,默认是C:/ProgramFiles /VTK,值得一提的是最后生成的库并不大,只有约200MB,如果C盘不紧张,可以不作修改,但是放在C盘要注意创立文件夹的权限,这个后续会提到。
  • VTK_Group_Imaging 勾选上
  • VTK_Group_Qt 勾选上

接下来再次点击configure,这次耗时会短很多,红色区域变少了,不出意外的话主要是Qt方面的,如果上述Qt的安装和环境变量的设置没问题,应该不用做修改,再次configure,这时候红色消失了,点击Generate,此时已经在生成路径上生成了VTK工程,此时一定要注意,不要直接在Cmake中点击open project,因为我们在CMAKE_INSTALL_PREFIX路径下写入文件需要管理员权限。所以我们在桌面上右击Visual Studio,用管理员身份运行,然后在程序内打开VTK.sln(在建立路径内),右击左边栏里的ALL_BUILD,选择重新生成,这时候会开始编译,这个过程会花费较久的时间,需耐心等待,如果上述过程都没有问题,应该提示成功128个,失败0个,跳过0个。接下来右击INSTALL,选择仅用于项目-仅生成install,提示成功1个就完成了,如果在这一步报错setlocal,很有可能是没有使用管理员身份运行。

六、第一个vtk程序

博主在经历波折,终于安装好VTK后兴奋了好久,然而由于缺乏vs以及编译的基础,面临了一个尴尬的问题——如何使用vtk?它不像一个简单的IDE一样,直接建立工程、源文件就可以编译运行,而是需要借助cmake将vtk建立好的库作为外部引用源,接下来就讲讲如何实现。

首先建立一个文本文件(.txt),命名为CmakeLists.txt,注意区分大小写,输入以下代码

cmake_minimum_required(VERSION 3.13)
project(RenderCylinder)
find_package(VTK REQUIRED)
include(${VTK_USE_FILE})
add_executable(${PROJECT_NAME} RenderCylinder.cpp)
target_link_libraries(${PROJECT_NAME} ${VTK_LIBRARIES})

分行进行分析:

第一行表示需要的cmake最低版本,只要输入低于等于你所用的cmake版本即可,我这里取和我用的版本相同。

第二行表示要建立的工程名字

第三行、第四行表示本工程所依赖的外部引用源

第五行指定源文件的名字

第六行表示将本工程和VTK库链接

这里用来举例的程序名为RenderCylinder,在自己写程序时,需要修改的是第二行的工程名和第五行的源文件名。在使用cmake之前,还要在和CmakeLists.txt同路径下建立第五行所指定的源文件,快捷的方法是建立文本文件,然后重命名直接改后缀(.cpp)就可以了。

建立好CmakeLists.txt和RenderCylinder.cpp之后,打开cmake-gui,第一个路径选择上述两个文件所在的路径,第二个建立路径自己选择,然后configure两次,红色消失,点generate,然后open project,得到以下界面

右击左边栏的RenderCylinder,选择设为启动项目,展开RenderCylinder,展开Source Files,双击打开RenderCylinder.cpp,输入以下代码(具体代码在此不作分析)

#include "vtkSmartPointer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkInteractorStyleTrackballCamera.h"
#include "vtkCylinderSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkProperty.h"

int main()
{
	vtkSmartPointer<vtkCylinderSource> cylinder =
		vtkSmartPointer<vtkCylinderSource>::New();
	cylinder->SetHeight(3.0);
	cylinder->SetRadius(1.0);
	cylinder->SetResolution(10);
	/*创建一个柱体,设置高度、半径、棱边数*/

	vtkSmartPointer<vtkPolyDataMapper> cylinderMapper =
		vtkSmartPointer<vtkPolyDataMapper>::New();
	cylinderMapper->SetInputConnection(cylinder->GetOutputPort());
	/*渲染多边形几何数据*/

	vtkSmartPointer<vtkActor> cylinderActor=
		vtkSmartPointer<vtkActor>::New();
	cylinderActor->SetMapper(cylinderMapper);
	/*设置生成几何图元的Mapper。即连接一个Actor到可视化管线的末端*/

	vtkSmartPointer<vtkProperty>cylinderProperty = 
		vtkSmartPointer<vtkProperty>::New();
	cylinderProperty->SetColor(0.5, 0.5, 0.5);
	cylinderActor->SetProperty(cylinderProperty);
	/*设置对象属性*/

	

	vtkSmartPointer<vtkRenderer> renderer=
		vtkSmartPointer<vtkRenderer>::New();
	renderer->AddActor(cylinderActor);
	renderer->SetBackground(0.1, 0.2, 0.4);
	/*场景渲染*/

	vtkSmartPointer<vtkRenderWindow> renWin =
		vtkSmartPointer<vtkRenderWindow>::New();
	renWin->AddRenderer(renderer);
	renWin->SetSize(500, 500);
	/*显示窗口*/

	vtkSmartPointer<vtkRenderWindowInteractor>iren =
		vtkSmartPointer<vtkRenderWindowInteractor>::New();
	iren->SetRenderWindow(renWin);
	/*设置交互机样式*/

	vtkSmartPointer<vtkInteractorStyleTrackballCamera>style =
		vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
	iren->SetInteractorStyle(style);
	/*交互机样式的一种*/


	iren->Initialize();
	iren->Start();

	return 0;

}

此时如果点击调试器开始运行,会报错找不到xxxxxxx.dll,是因为vs找不到库文件,此时我们要进入系统环境变量,添加vtk/bin路径,添加方法在第三部分已经讲过,不再赘述,添加完之后再次运行,此时就可以正常运行,结果如下

 

至此,vtk完整的编译安装及第一个程序就完成了~ 

  • 22
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值