想自学以上内容,网上教程很多:
记录一下VS2022+Qt5.15.2+CMake3.23.2编译VTK 8.2.0套件的过程_面包不要的博客-CSDN博客
上面这个很详细,不过估计版本较老,没有成功
Compiling VTK Using CMake and Visual Studio - programming
上面这个是国外的,主要是照着这个一步步弄下来的,略有改动。
系统:Windows 8.1(Visual studio说是要装在Win10上的,我的系统升级不了);VS2022 Community;CMake(cmake-3.24.0-rc3-windows-x86_64);VTK(VTK-9.2.0.rc1.tar.gz; VTKData-9.2.0.rc1.tar.gz(非必需?))
另很多教程里要装Qt,我这里没有装。
Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器
Download | VTK
无论中文还是英文,都强调文件路径里不要有奇怪的字符,我都是直接装在C或D盘下面
1、CMake下处理
D盘下新建一个文件夹“VTK”;
将VTK(VTK-9.2.0.rc1.tar.gz)解压到D盘下,将解压后的文件夹命名为 “VTK-9.2.0”;
同时新建一个文件夹“Build”
打开CMake
通过"Browse Source"和"Browse Build"设置如上;将Grouped,Advanced勾选
点击"Configure"
主要目的是将上图红色区域设置好(让它不红)
之后的设置可能因CMake版本不同而不同;比如我的CMake里 VTK_DATA_STORE;VTK_DATA_ROOT就没有这个选项,这里面有的是添加前面下载的“ VTKData”所在路径(这个可能主要是提供示例的,所以并非必需)。
重点:“CMAKE_INSTALL_PREFIX”默认设置是"C:\Program Files (X86)\VTK"改成 "C:\VTK\"(在C盘下建一个“VTK”文件夹)
其余选项看情况,比如说“BUILD_EXAMPLES”勾不选估计无关紧要,我是勾选了。
点击"Configure",确保红色区域都不红了。
之后点击“Generate”。
这时你打开“C:\VTK\”这个文件夹,你会发现这个文件夹还是空的(所以CMake在此对这个文件夹主要是设置路径的一个作用,这个文件夹之后还会用到);“D:\VTK\Build”有新文件生成。
2. VS2022下的设置
用VS打开“D:\VTK\Build”文件夹下的"ALL_BUILD.vcproj"
选择“Release”
右键“ALL_BUILD” 点击“生成”(要很久)
右键“INSTALL”点击生成(也要很久)
这步之后你会发现你的“C:\VTK\”这个文件夹下有新文件生成(就是之前设置“CMAKE_INSTALL_PREFIX”的文件夹)
3.VS下测试你的VTK是否可用
文件-->新建-->项目(这里我的项目叫“TestVTK”)
将所建项目文件中的“源文件”里的CPP文件代码(替换框内部分)改为如下(红色是添加部分源自“VTK图形图像开发进阶”这本书;删除打印“Hello world!”那行代码,估计不删也没关系)
#include
#include
#include
int main()
{
vtkSmartPointer
vtkSmartPointer
renWin->Render();
renWin->SetWindowName("TestVTKInstall");
renWin->SetSize(640, 480);
renWin->Render();
std::cin.get();
return EXIT_SUCCESS;
}
右键点击的项目TestVTK-->属性
C/C++ ->常规 ->附加包含目录设置为 C:\VTK\include\vtk-9.2
链接器 ->常规 ->附加库目录设置为 "C:\VTK\lib"
链接器 ->输入 ->附加依赖项
添加你要的库(小白不知道怎么选,很多说明因为版本不同,库的名字也不同)我的方法是在 "C:\VTK\lib" 下 新建1.TXT文件,打开后输入“DIR *.* /B >数据.TXT”保存,修改后缀,改为1.bat 双击运行。生成的“数据.TXT”文件里即包含所有文件名,删除其中不是以“.lib”结尾的名字。拷贝所有.lib结尾的文件名,添加到下下图的框里。
一路确定之后,运行程序,可弹出对话框同时报错如下。
进行如下设置
将 工作目录 设置为 “D:\VTK\Build\bin\Release ”,如下
再运行工程,就没错了。。。。。
以上工作,搞了一周的所有晚上,记录一下,以防后面自己忘记,可能有错误,仅供有需要者参考!
运行以上代码可能没有错误 没有弹窗 需初始化 添加如下代码
#include
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);