1. 准备
- cmake:http://www.cmake.org/cmake/resources/software.html
- vtk source code:http://www.vtk.org/VTK/resources/software.html#latest2
2. 平台环境
- win7 32bit
- visual studio 2005
3. 开始配置
我下载的 cmake 是 cmake-2.8.6-win32-x86.exe, vtk源码包是 vtk-5.8.0.zip
1)首先安装 cmake ,并将 vtk 源码包进行解压
2)运行cmake, cmake 的作用是生成一个 vs2005 工程项目,使得 vtk 可以被 vs2005 编译,“Where is the source code”用来指定VTK源码加压缩后的文件夹位置,“Where to build the binaries”用来指定 VS2005 工程项目的输出位置,可以任意指定
(生成之后不可随意移动,否则可能导致后续编译出问题)
3)其他的目前先不用做,直接点“Configure”配置一下,大约运行个十分钟左右,就会显示出一片红色的结果,这时候在“Advanced”前打个勾,在红色结果框里找到“vtk_use_guisupport”,选中打个勾,第二次Configure配置一下,很快就出结果了,在结果框里找到“vtk_use_mfc”,选中打个勾,第三次Configure,这次应该不会再有红色的结果,全显示为无色了。最后点击”Generate“输出配置结果,至此,cmake 的工作都已经完成了,接下来就要使用 vs2005 对 vtk 进行编译了
4)在之前指定的“Where to build the binaries”的 vs2005 工程项目输出目录中,双击打开生成的”.sln"文件
5)右键点击“ALL_BUILD”选择“rebuild”(重新生成)就可以进行编译生成了,大约需要半个小时
6)生成结束后,在解决方案里找到“INSTALL”,右击-->调试-->启动新实例,它会把之后实现 vtk 项目需要的“.h, .lib, .dll, .exe“集中输出到一个位置,位置是在第3步cmake生成时,结果框中有个“cmake_install_prefix”,就是它指示的位置,也可以修改其值。默认情况下,“.h, .lib, .dll, .exe“会被放到 C:\Program Files\VTK 目录下
这里由于win7增加了权限控制,可能 install 会出如下错误:
1>------ 已启动生成: 项目: INSTALL, 配置: Debug Win32 ------
1>
1>正在执行生成后事件...
1>-- Install configuration: "Debug"
1>CMake Error at cmake_install.cmake:31 (FILE):
1> file cannot create directory: C:/Program Files/VTK/lib/vtk-5.8. Maybe need
1> administrative privileges.
1>Project : error PRJ0019: 工具从"正在执行生成后事件..."
1>生成日志保存在“file://d:\vtk_5.8.0\bin\INSTALL.dir\Debug\BuildLog.htm”
1>INSTALL - 1 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 70 最新, 0 已跳过 ==========
1>
1>正在执行生成后事件...
1>-- Install configuration: "Debug"
1>CMake Error at cmake_install.cmake:31 (FILE):
1> file cannot create directory: C:/Program Files/VTK/lib/vtk-5.8. Maybe need
1> administrative privileges.
1>Project : error PRJ0019: 工具从"正在执行生成后事件..."
1>生成日志保存在“file://d:\vtk_5.8.0\bin\INSTALL.dir\Debug\BuildLog.htm”
1>INSTALL - 1 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 70 最新, 0 已跳过 ==========
这个时候只要修改之前指定的“Where to build the binaries”的 vs2005 工程项目输出目录中的cmake_install.cmake文件中的CMAKE_INSTALL_PREFIX项即可,如下,把它改至D:/Program Files/VTK:
# Set the install prefix
IF(NOT DEFINED CMAKE_INSTALL_PREFIX)
SET(CMAKE_INSTALL_PREFIX
"D:/Program Files/VTK")
ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)
7)这个 vs2005 vtk 项目可以生成 ”Debug, Release, MinSizeRel, RelWithDebInfo” 四种模式所需要的“.h, .lib, .dll, .exe“文件,可以通过修改项目的配置并重复5)6)两步来生成,为了避免文件覆盖,需要将前一次生成的文件放到其他目录下(我就编译了Debug模式,其他的没试过,一般来说也用不到的吧=.=)
8)至此,vtk编译已经完成了,我们可以进行测试了,新建一个控制台空项目,新建一个cpp源代码文件,将以下代码拷入:
#include "vtkConeSource.h"
#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkCamera.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkProperty.h"
#include "windows.h"
int main()
{
vtkConeSource *cone = vtkConeSource::New();
cone->SetHeight( 3.0 );
cone->SetRadius( 1.0 );
cone->SetResolution( 10 );
vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New();
coneMapper->SetInputConnection( cone->GetOutputPort() );
vtkActor *coneActor = vtkActor::New();
coneActor->SetMapper( coneMapper );
vtkRenderer *ren1= vtkRenderer::New();
ren1->AddActor( coneActor );
ren1->SetBackground( 0.1, 0.2, 0.4 );
vtkRenderWindow *renWin = vtkRenderWindow::New();
renWin->AddRenderer( ren1 );
renWin->SetSize( 300, 300 );
int i;
for (i = 0; i < 360; ++i)
{
renWin->Render();
ren1->GetActiveCamera()->Azimuth( i );
Sleep(200);
}
cone->Delete();
coneMapper->Delete();
coneActor->Delete();
ren1->Delete();
renWin->Delete();
return 0;
}
9)然后配置该项目的各种环境,lib,include:
![](http://hi.csdn.net/attachment/201108/29/0_1314619969wgUV.gif)
![](http://hi.csdn.net/attachment/201108/29/0_1314619980f22n.gif)
![](http://hi.csdn.net/attachment/201112/13/0_13237792150Mht.gif)
其中,连接器-->输入-->附加依赖项 中需要填写的是网上流传的一些需要用到的lib:
kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib uuid.lib ole32.lib oleaut32.lib comdlg32.lib advapi32.lib vtkMFC.lib vtkRendering.lib vtkGraphics.lib vtkverdict.lib vtkImaging.lib vtkIO.lib vtkFiltering.lib vtkCommon.lib vtkDICOMParser.lib vtkNetCDF.lib vtkmetaio.lib comctl32.lib wsock32.lib vtksqlite.lib vtkpng.lib vtktiff.lib vtkzlib.lib vtkjpeg.lib vtkexpat.lib vtksys.lib ws2_32.lib vfw32.lib vtkftgl.lib vtkfreetype.lib opengl32.lib vtkWidgets.lib vtkVolumeRendering.lib vtkViews.lib vtkproj4.lib vtklibxml2.lib vtkInfovis.lib vtkHybrid.lib vtkGeovis.lib vtkGenericFiltering.lib vtkexoIIc.lib vtkCharts.lib vtkalglib.lib
然后应该就可以运行这个测试项目了!
References:
2) Boost+QT+VTK+VS2005环境配置方法:
http://blog.csdn.net/lovelyloulou/article/details/6283555