1.1 VTK的安装和编译
可以参考以下内容:
win10下在Qt中使用VTK(安装VS2017+安装QT5.9.9+编译配置VTK8.2.0)_qt配置vtk_HBybhy的博客-CSDN博客
1.2创建一个简单的VTK程序
1.在VTK/Examples目录里新建一个名为“Chap01”文件夹,输入内容为:
set(VTK_QT_CMAKE_DIR "D:\\QT\\5.14.0\\msvc2017_64\\lib\\cmake\\Qt5")
CMAKE_MINIMUM_REQUIRED(VERSION 3.27.0)
PROJECT(Chap01 )
FIND_PACKAGE(VTK REQUIRED)
INCLUDE(${VTK_USE_FILE})
ADD_EXECUTABLE(1.3_TestVTKInstall 1.3_TestVTKInstall.cpp)
TARGET_LINK_LIBRARIES(1.3_TestVTKInstall ${VTK_LIBRARIES} )
2.在CMakeList.txt同级目录下新建一个cpp文件,名为“1.3_TestVTKInstall.cpp”
#include<vtkRenderWindow.h>
#include<vtkSmartPointer.h>
int main(){
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->Render();
std::cin.get();
return 0;
}
3.采用CMake软件编译
where is the source code 选择CMakeList.txt所在文件夹Chap01
where to build the binaries 在Chap01下创建Build文件
编译过程中的常见问题
不勾选Advanced的话,默认显示出来的只有两项
1)CMake
CMAKE_INSTALL_PREFIX 默认值为C:/Program Files/Chap01 (Chap01指的是在CMakeLists.txt里的project命令里所指定的工程名字)
2)Ungrouped Entries
VTK_DIR 指向VTK的编译目录(C:/Program Files/VTK/lib/cmake/vtk-8.2),也就是VTKConfig.cmake文件所在的完整路径
Qt5_DIR 需要指向Qt的路径
4.继续点击Configure,配置成功,点击Generate
5.点击Open Project,直接编译运行1.3_TestVTKInstall项目
常见错误
1)VS中出现以下错误的话
错误 LNK1104 无法打开文件“vtkRendering.lib” 1.3_TestVTKInstall D:\VTK\VTK-8.2.0\Examples\Chap01\Build\LINK 1
按照书上的CMakeLists.txt 代码最后一行是
TARGET_LINK_LIBRARIES(1.3_TestVTKInstall vtkRendering vtkCommon)
可能会出现上述问题,改成以下代码即可解决该问题
TARGET_LINK_LIBRARIES(1.3_TestVTKInstall ${VTK_LIBRARIES} )
2)找不到dll文件,需要将1.3_TestVTKInstall.cpp属性页中调试的工作目录改为D:\VTK\VTK-8.2.0\build\bin\Debug(也就VTK安装编译时创建的build下的Debug目录)
6.再次运行,可以出现以下运行界面,说明运行成功
1.3 代码解释
1.CMakeLists.txt
1)CMAKE_MINIMUM_REQUIRED(VERSION 3.27.0)
该命令用于构建工程时所需的CMake版本要求,第一个参数VERSION是必需的关键字,且为大写。第二个参数为指定的CMake版本号。
2)PROJECT(Chap01 )
用该命令指定工程名称,可指定工程支持的语言,支持语言的参数为可选,默认支持C/C++
3)FIND_PACKAGE(VTK REQUIRED)
该命令用于搜索并加载外部工程,参数[REQUIRED]表示所要搜索的外部工程对本工程来说是必须的,如果没有搜索到,CMake会终止整个工程构建过程。以VTK为例,搜索的就是VTKConfig.cmake
4)INCLUDE(${VTK_USE_FILE})
指定载入一个文件或模块,本例指定的是VTK模块,则会在CMAKE_MODULE_PATH中搜索VTK模块并载入,变量CMAKE_MODULE_PATH 指的是搜索CMake模块的目录,安装完CMake以后,在CMake的安装目录下(一般是C:Program Files (x86)CMake 2.8\)可以找到CMake已经定义的模块,路径为C:\Program Files (x86)lCMake 2.8\sharelcmake-2.8\Modules,在该目录下存在FindVTK.cmake文件,其中解释了变量VTK_USE_FILE的意义。
5)ADD_EXECUTABLE(1.3_TestVTKInstall 1.3_TestVTKInstall.cpp)
定义这个工程会生成一个文件名为<name>的可执行文件,相关的源文件通过source1、source2、...、sourceN列出(如果工程里有多个源文件,源文件之间用空格隔开)。
6)TARGET_LINK_LIBRARIES(1.3_TestVTKInstall ${VTK_LIBRARIES} )
a.未找到vtkRendering.lib和vtkCommon.lib,应该和VTK版本有关,使用${VTK_LIBRARIES}代替
b.VTKConfig.cmake设置了VTK_LIBRARIES变量,包含了所有库文件,这样就不需要一一列出了
2.1.3_TestVTKInstall.cpp
#include<vtkRenderWindow.h>
#include<vtkSmartPointer.h>
1.3_TestVTKInstall.cpp中使用了vtkRenderWindow和 vtkSmartPointer 这两个类,需要包含头文件
vtkSmartPointer<vtkRenderWindow> renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->Render();
std::cin.get();
return 0;
a.第一行该方式使用智能指针定义vtkRenderWindow的对象,这是VTK实例化对象的基本用法
b.第二行调用vtkRenderWindow 里的方法显示并渲染VTK窗口
c.第三行没有特别意义,只是让程序暂停下来,等待接受用户的输入,目的是显示VTK窗口。