近期打算学习如何在VS2010环境下,通过调用VTK库的方式来对点云进行重建,因此需要学习VTK库的使用。VS2010是之前电脑上已经安装好的软件,因此这里不再赘述。首先是VTK库安装所需的一些准备工作。
- 准备安装包:
cmake_3.12.4-win64-x64.zip
(cmake下载地址 需要根据电脑系统等选择,我是windows系统)
VTK-6.3.0.zip以及VTKData-6.3.0.zip
(VTK下载地址 网上的教程要么是最新的版本,要么是很早的版本,我试了一下,6.3.0版本是可以在VS2010下顺利安装成功的)
- 解压安装
1 将VTK-6.3.0.zip解压至C:/MyProjects/VTK-src
路径下(我没找到网上说的vtk-win32.exe,所以直接用了zip文件,而该路径是我在C盘新建的,这个随意)
2 将VTKData-6.3.0.zip解压至C:/MyProjects/VTK-data
路径
3 这里我把cmake_3.12.4-win64-x64.zip解压到了C:/MyProjects
下,不知道解压到其他地方会不会有影响。
4 对于解压后的cmake,其中的bin文件夹下有一个cmake-gui.exe的可执行文件,运行它,然后在下面做详细介绍。
参考文章VTK(一)vtk5.8 +vs2010. 安装总结
- cmake操作
1 运行cmake-gui.exe会出现一个界面,需要设置“where is the source code”和“where to build the binaries”两个目录,其中第一个是vtk源码所在的路径,我这里写为“C:/MyProjects/VTK-src”,而第二个目录则需要
设置为cmake源码将要被编译到的路径,这里我写为“C:/MyProjects/VTK-bin”。
但是这个时候configure就出问题了,底下的文字栏显示了报错:“Error in configuration process,project files may be invalid”,以及出现一堆红色的“xxx not found”。最后想到在VTK源码所在路径下并不是把VTK-6.3.0内容直接解压进去,而是还有个VTK-6.3.0文件夹,里面才是内容,是不是跟这个有关呢?
因此我对VTK-6.3.0文件夹建了一个备份VTK-6.3.0-copy文件夹,将其作为VTK源码路径“C:/MyProjects/VTK-src/VTK-6.3.0-copy”,configure试了一下,进度条走完果然跟其他经验帖出现了一样的结果。就是下图这种,一堆红色。
ps:第一次configure时会出现一个选择工程的编译器的对话框,选择vs2010,并勾选Use default native compilers选项并finish。
2 勾选红色上方的Advanced选项,除了默认勾选之外,需要勾选的是
BUILD_SHARED_LIBS
CMAKE_INSTALL_PREFIX目录则改为“C:/MyProjects”,也就意味着之后生成的文件夹会出现在这个路径之下,应该可以再新建个文件夹放进去,会更清晰整齐一些。
由于我的VTK版本较高,是5.0以上,因此不用勾选vtk_use-guisupport,只勾选module_guisupport_mfc
未勾选的是
BUILD TESTING
BUILD EXAMPLES
因为勾选上需要加载很久,但是吧,我还是建议勾选上,因为我是新手,它这里面都是例子,我现在都有点后悔没选了,还要费劲巴拉的找实例验证VTK是不是安装成功了。
3 勾选完之后,我们再configure一次,直到红色都变成灰色,就可以点击generate啦!这时候就会发现“C:/MyProjects/VTK-bin”下生成VTK.sln等文件了。
参考文章vs2010+cmake3.2.1+VTK搭建(内附四种VTK版本)
- 编译VTK.sln
用vs2010打开VTK.sln文件,对其中的ALLBuild工程右键,选择生成。生成成功之后同样生成INSTALL了,结束之后就可以在之前cmake选定的Install文件夹中看到相关的内容了。这个时候就体现出新建一个文件夹的重要性了,我的都铺在大文件夹里有点乱。
- 配置路径
选择项目>属性,选择VC++目录,修改包含目录路径为上图文件夹(install文件夹)下的include,即“C:/MyProjects/include”。库目录也改为“C:/MyProjects/lib”
最重要的是!配置环境变量!
我之前没注意,之后的小实例老是报错,查了好久
右键计算机->属性->高级系统设置->环境变量,在系统变量栏目里找到path一栏,将install文件夹下的bin路径拷贝到变量值里面点击确定即可。变量间隔要用;隔开,我这里因着后面的报错把所有含“xxx.dll”文件的路径都包含进去了“C:/MyProjects/bin”和“C:/MyProjects/VTK-bin/bin/Debug”,然后确定,重启电脑和VS。
参考文章vs2010+vtk源码编译,工程配置
- 小例子
具体我不说了,参考的一个大神的,链接放下面了,说一下遇到的几个问题
02-VTK编译安装
问题1
对例子中ALL_BUILD进行组建时,找不到BUILD菜单的Set Active Configuration
解决:
打开工程,选定相应工程(如ALL_BUILD),在菜单栏上选择:生成->配置管理器->活动解决方案,配置可选组建方式有Debug,Release,MinSizeRel和RelWithDeInfo
问题2
实例2.3.2-TestVTKInstall中报错
解决
CMakeLists.txt中有的空格没有体现,对此评论中有人做了指正
cmakelists.txt中, (VERSION2.8)中,2前边有空格
find_package(VTKREQUIRED)中,VTK后边有空格
add_executable(${PROJECT_NAME}TestVTKInstall.cpp)中间有空格
target_link_libraries(${PROJECT_NAME}vtkRendering vtkCommon)空格
TestVTKInstall.cpp中,intmain中间有空格。
问题3
sln工程编译报错,无法找到vtkRendering.lib
解决:
修改cmakelists.txt最后一行改为target_link_libraries(${PROJECT_NAME} ${VTK_LIBRARIES})
问题4
项目属性中找不到链接器选项
解决:
在该项目中,工程为包含TestVTKInstall.cpp的TestVTKInstall,需要选定该工程查看属性
问题5
编译通过,F5运行报错——无法启动程序ALL_BUILD
*解决:*将所要运行的项目(TestVTKInstall)右键设置为启动项
问题6
提示报错——计算机缺失“xxx.dll”文件
解决:
环境变量啊!上面提过的!
实例cmake路径如下:
最后结果上图: