VTK5.10.1+Cmake+vs2010整合安装

 1. 下载:(VS2010就自己在网上找了咯,这里不提供具体路径下载了)
vtk-5.10.1.zip源程序
vtkdata-5.10.1.zip 数据
vtkDocHtml-5.10.1.tar.gz (文档可以不下载)
(vtk相关安装程序下载:http://vtk.org/VTK/resources/software.html)
cmake-2.8.11.1.zip

(cmake程序下载:http://www.cmake.org/cmake/resources/software.html)


2.VTK安装于保存:
    建立将要安装vtk的文件夹,例如:...\VTK。在此文件夹下,建立如下4个文件夹:
..\vtk 用于置放源码(解压vtk-5.10.1.zip更名为vtk)
..\vtkdata      用于置放数据(解压vtkdata-5.10.1.zip更名为vtkdata)
..\bin          用于编译(新建一个就好命名由自己决定)
..\doc        放置文档(可以不下载当然就意味着可以不要)

3. 先安装CMake,然后利用CMake编译:
 ------------------------------------------------------------------
       where is the source code:      ...\VTK\vtk
       where to build the binaries:   ...\VTK\bin
 ------------------------------------------------------------------
    然后Configure。祈祷不出现进程MSDEV.EXE死机的情况——如果不幸出现了,Delete Cache,(最彻底的办法是把整个bin文件夹清空),然后——try again!
此后,修改Cache Values,可以参考如下设置(是我自己的设置):
 -------------------------------------------------------------------
       BUILD_EXAMPLES                    ON
       BUILD_SHARED_LIBS                ON
        (将多生成dll文件,可以用动态库编程)
       BUILD_TESTING                      OFF
       CMAKE_INSTALL_PREFIX          C:\Program Files\VTK
        (注:很多解压出来的dll,lib会存放于此)
       VTK_DATA_ROOT                   ...\VTK\vtkdata
       VTK_USE+GUISUPPORT           ON
        (否则用MFC会有问题)
         VTK_USE_MFC                    ON
         VTK_USE_MPEG2_ENCODER   ON
        (如果缺少受版权保护的vtkMPEG2Encode.lib,这里无法打开mpeg2,只能设置off。当拿到这个lib以后,可以设为on,然后把这个lib存放于下面的路径中。)
         vtkMPEG2Encode_INCLUDE_PATH  C:\Program Files\VTK\include\vtk-5.0
         vtkMPEG2Encode_LIBRARIES  C:\Program Files\VTK\lib\vtkMPEG2Encode.lib
       VTK_USE_PARALLEL               OFF
        (这个是并行计算相关的)
       VTK_USE_QVTK                    OFF
       VTK_USE_RENDERING             ON
        (这个我确实没搞懂到底如何设置)
 -------------------------------------------------------------------

    修改完毕以后再次Configure,等红色高亮部分都变白,则宣告make成功,此时OK,祈祷不出现报错信息。


4.编译Camke生成的工程文件:


用 vc++2010打开 D:\VTK\VTKbin\Utilities\MaterialLibrary目录下的MaterialLibrary.sln 文件,右键点击All_Build选择重新生成。


5. 若build_shared_libs 选择On,把D:\VTK\VTKbin\bin\Debug里生成的vtksys.dll文件拷到windows/system目录下。或者打开VS2010的属性管理器(视图->其他窗口->属性管理器),双击任意“Microsoft.Cpp.Win32.user”,弹出属性页,在里面VC++目录的 Library Directories 中将bin文件夹中的Debug包括进去。


6.有可能会遇到的麻烦:


打开D:\VTK\VTKbin目录下的VTK.sln,右键点击All_Build选择重新生成。
    若build_shared_libs选择On,中途涉及MFC的示例会出错,
错误①
Link错误:
a.在Solution Explorer中分别找到vtkDLG、vtkMDI、vtkSDI这三个项目,
右键—>Properties—>Configuration Properties—>Linker—>Input—>在Additional Dependencies中添加..\..\..\..\..\bin\Debug\vtkIO.lib
b.再找到Win32SampleMFC这个项目,与以上类似,添加..\..\..\..\bin\Debug\vtkIO.lib这样,就为这些项目加入了vtkIO.lib库。
 
错误②
This file requires _WIN32_WINNT to be #defined at least to 0x0403. Value 0x0501 or higher is recommended.
解决办法为:
右击_WIN32_WINNT,查找所有引用,将查找出的文件中的4个stdafx.h文件中的如下部分改动为:
找到五个工程:vtkDLG、vtkMDI、vtkSDI、Win32SampleMFC、vtkMFC
a.打开前四个工程源文件中的stdAfx.h,
如果找不到,则打开<资源文件>中的stdAfx.cpp,打开找到其中#include "stdAfx.h" ,右击:<打开"stdAfx.h">
b.打开vtkMFC工程的vtkMFCWindow.cpp,按如下方法修改
(注:a.4个stdafx.h
3个都是在{解压的vtk5.10.1的目录}\Examples\GUI\Win32\vtkMFC\  下面,你可以搜索一下,共4个stdafx.h,都改
1个在{解压的vtk5.10.1的目录}\Examples\GUI\Win32下面
b.一个 vtkMFCWindow.cpp, 在{解压的vtk5.10.1的目录}\GUISupport\MFC

 
// Modify the following defines if you have to target a platform prior to the ones specified below.
// Refer to MSDN for the latest info on corresponding values for different platforms.
 #ifndef WINVER        // Allow use of features specific to Windows 95 and Windows NT 4 or later.
 #define WINVER 0x0601    // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
 #endif
 
 #ifndef _WIN32_WINNT    // Allow use of features specific to Windows NT 4 or later.
 #define _WIN32_WINNT 0x0601    // Change this to the appropriate value to target Windows 98 and Windows 2000 or later.
 #endif            
 
 #if _MSC_VER >= 1300
 #ifndef _WIN32_WINDOWS    // Allow use of features specific to Windows 98 or later.
 #define _WIN32_WINDOWS 0x0601 // Change this to the appropriate value to target Windows Me or later.
 #endif
 #endif
 
 #ifndef _WIN32_IE      // Allow use of features specific to IE 4.0 or later.
 #define _WIN32_IE 0x0800  // Change this to the appropriate value to target IE 5.0 or later.
 #endif
 
红字对应的是win7版本。
另外还要改动文件vtkMFCWindow.cpp中的部分代码:
// Allow use of features specific to Windows 95 and Windows NT 4 or later.
#ifndef WINVER
#define WINVER 0x0601
#endif


// Define _WIN32_WINNT and _WIN32_IE to avoid the following error with Visual
// Studio 2008 SP1:
// "C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\sdkddkver.h(217) :
// fatal error C1189: #error :  _WIN32_WINNT settings conflicts with _WIN32_IE
// setting"


#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0601 // =_WIN32_WINNT_NT4
#endif
#ifndef _WIN32_IE
#define _WIN32_IE 0x0800 //=_WIN32_IE_IE60SP1
#endif
此时,应该没有问题了。
若出现cannot find vtkMFC.lib则是由于cmake阶段未勾选vtk_use_mfc  
然后右击Cone6,选择调试->启动新实例,这时可以看到正确运行的程序了。(注:Cone6需要你CMAKE时勾选build_examples:)
新建项目的配置
1. 新建项目Test(控制台应用程序空项目),增加Test.cpp文件,用Cone6.cxx的文件内容覆盖Test.cpp的内容。
1.1 配置附加包含目录,位于项目属性->配置属性->c/c++/常规 的第一项,拷入入下述内容(具体可通过查看实例的附加包含目录):
D:\VTK\bin;D:\VTK\bin\Common;D:\VTK\bin\Utilities;D:\VTK\vtk5.0\VolumeRendering;D:\VTK\vtk5.0\Graphics;D:\VTK\vtk5.0\Filtering;D:\VTK\vtk5.0\Common;D:\VTK\vtk5.0\Rendering;%(AdditionalIncludeDirectories)
1.2 附加依赖项,位于项目属性->链接器->输入 ->点击右面的<编辑>,拷入入下述内容(具体可通过查看实例的附加包含目录,切勿直接负责..\..\性质的内容,若想直接复制,请确保新建项目与拟拷配置的项目位于同一文件夹下):
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
..\..\VTK\bin\bin\Debug\vtkRendering.lib
..\..\VTK\bin\bin\Debug\vtkGraphics.lib
..\..\VTK\bin\bin\Debug\vtkImaging.lib
..\..\VTK\bin\bin\Debug\vtkFiltering.lib
..\..\VTK\bin\bin\Debug\vtkCommon.lib
..\..\VTK\bin\bin\Debug\vtksys.lib
ws2_32.lib
 
1.3
将D:\vtk\bin\bin\debug这个文件夹选择此中所有的DLL 后缀的文件全部复制到c:\windows\system32 (调试时推荐),或者拷贝到VC项目可执行文件所在位置(安装到其他机器时拷贝)。
1.4    后右击Cone6,选择调试->启动新实例,看到Cane6的实例窗口
(可以修改
  for (i = 0; i < 360; ++i)
中的360改更为大数值如7200 效果会稍微明显一点)

 

你可能感兴趣的:(c++,CMAKE,VTK,VS2010)