win8.1-64bit, VS2010, vtk5.10.1, itk4.3, igstk5.2, cmake2.8.12.2, Qt4.8.6。
虽然我是64位系统,但是以上编译都是采用release , win32的!这个一定要注意。
https://sourceforge.net/projects/itk/files/itk/4.3/
版本不一样不能保证编译正确。比如,之前用itk4.7.1就会莫名其妙出现各种错误,现在用以上的配置可以编译正确。
CMake设置就不多说了,用qt的话选择IGSTK_USE_QT。
其他设置都是按照编译vtk,itk等的老路子来吧。
如果编译INSTALL时出现以下错误:
CMake Error at cmake_install.cmake:51 (FILE):
file INSTALL cannot find
“E:/IGSTK/IGSTK5.2_VS2010_VTK5.10.1_ITK4.3.1_Qt4.8.6/IGSTK-Build/IGSTKBuildSettings.cmake”.
解决办法:
更改igstk 源文件 中的CMakeLists.txt 中:
${IGSTK_BINARY_DIR}/IGSTKBuildSettings.cmake
将其删去,或注释掉,编译通过。
有时候可能需要将原来生成exe的工程更改为生成lib,这时候需要更改相应工程的CMakeLists.txt文件,找到工程的代码add_executable()。再后边添加 add_library()命令用来生成lib文件。
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)
建立将要安装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.有可能会遇到的麻烦:
若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库。
在将VC6.0程序转换成VS2010之后,弹出此错误,有两种方法可以解决此问题,根据具体情况设定,呵呵
(1)修改stdafx.h中信息,如下所示
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxcview.h>
修改如下:
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#define _WIN32_WINNT 0x0501 //可根据系统类型设定
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxcview.h>
错误②
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 效果会稍微明显一点)
t-vtk-vs2010整合
一、系统环境:xp(sp3)32位
二、Vs2010安装
1版本:旗舰版
2代码助手:visualassistant x
3打开vs2010:工具-选项-项目和解决方案:更改路径使其不包含中文
三、qt安装
1版本:4.8.6
2安装顺序:1)qt-opensource-windows-x86-vs2010-4.8.6.exe
2) qt-vs-addin-1.1.11-opensource.exe
http://download.qt.io/official_releases/vsaddin/
3环境变量配置:PATH变量,添加c:\Qt\4.8.6\bin;添加QTDIR变量,c:\Qt\4.8.6。
打开之后就会看到vs工具栏中已经有了qt,如图:
四、vtk
1版本:cmake-2.8.12.2-win32-x86.zip
vtk-5.10.1.zip
vtkdata-5.10.1.zip
2创建目录和解压如下:
3运行:
4配置source和build目录后,点击configure
5选中Advanced后
勾选如下:(若找不到,点击configure后会出现,先把已有的选上)
BUILD_SHARED_LIBS
CMAKE_INSTALL_PREFIX:配置为C:/VTK
VTK_DATA_ROOT:C:/VTK/vtkdata-5.10.1/VTKData5.10.1
VTK_USE_GUISUPPORT
VTK_USE_QT
QT_QMAKE_EXECUTABLE:C:/Qt/4.8.6/bin/qmake.exe
详情见官网:http://www.vtk.org/Wiki/VTK/Configure_and_Build#Qt_4.8..2A
然后点击多次configure,直到没有红框为止
最后点击generate
6打开:
7
大约半小时完成
8
完成后,会多出如下目录
9更改模式为release
重复第7步或者如下方式
完成后会在C:\VTK\vtkbin\Win32\Release找到:qvtkwidgetplugin .lib和qvtkwidgetplugin .dll
将其拷到:C:\Qt\4.8.6\plugins\designer,这是打开qtdesigner会看到
10
VTK\bin下所有dll文件拷到:C:\Windows\system32下
VTK\include\vtk-5.10下所有拷到:C:\Qt\4.8.6\include
VTK\lib\vtk-5.10 下所有拷到C:\Qt\4.8.6\lib
新建qt工程会搜索qt默认目录,不然每次工程属性都要配置vtk路径
四、新建工程示例
1 打开vs2010,新建项目
2
点击finish
3
4 编辑:附加依赖项,添加qvtk.lib
一般会把已有的vtklib都添加进来:lib之间回车隔开
qvtk.lib
vtkCommon.lib
vtkDICOMParser.lib
vtkexoIIc.lib
vtkexpat.lib
vtkFiltering.lib
vtkfreetype.lib
vtkftgl.lib
vtkGenericFiltering.lib
vtkGeovis.lib
vtkGraphics.lib
vtkHybrid.lib
vtkhdf5.lib
vtkImaging.lib
vtkIO.lib
vtkInfovis.lib
vtkjpeg.lib
vtklibxml2.lib
vtkmetaio.lib
vtkNetCDF.lib
vtkpng.lib
vtkproj4.lib
vtksqlite.lib
vtkRendering.lib
vtksys.lib
vtktiff.lib
vtkViews.lib
vtkVolumeRendering.lib
vtkWidgets.lib
vtkzlib.lib
5打开项目中:.ui
6添加qvtk控件后保存
7启动调试
8出现
Success
1.下载qt-opensource-windows-x86-vs2010-4.8.6.exe
网址如下:
https://download.qt.io/archive/qt/4.8/4.8.6/qt-opensource-windows-x86-vs2010-4.8.6.exe
下完找个地方安即可
2.下载qt-creator-windows-opensource-2.8.0
http://download.qt.io/official_releases/vsaddin/
网址如下:
https://download.qt.io/official_releases/qtcreator/2.8/2.8.0/qt-creator-windows-opensource-2.8.0.exe
下完找个地方安
这里先大概说下 creator 和 qt库之间的关系
creator就是个IDE,里面是空架子,没有编译器,调试器等,这些都得自己去填充
而QT库就是它自己的一个图形库什么的
所以光有这些还不够
你电脑上还得有自己的编译器和调试器
编译器的话,我们这里用VS2010里面自己带的
使用 VS 2010 编译 ITK.
1. 下载 CMake:
2.下载 ITK:
3. 在 D 盘新建文件夹: D:/I_VTK/ITK , 之所以要多建立一个 ITK 文件夹, 是为了以后 ITK, VTK 混合编程,
4. 解压
5. 再建立一文件夹 ITK_bin, 作为 ITK 编译目标. D:\I_VTK\ITK\ITK_bin
6. 打开 CMAKE 进行配置. 假设你已经安装好 VS2010
7.点击 Configure 进行配置, 选择编译器,这里选择 Visual stdio 10, 等待,之后出现如下界面
为了加快安装进度,可以将选项BUILD TESTING 和BUILD EXAMPLES 都不勾选(ps:如果你想同时编译ITK 所提供的示例, 用于测试ITK 的示例, 则BUILD_EXAMPLES,
勾选BUILD_SHARED_LIBS(ps:BUILD_SHARED_LIBS 若选择为 ON, 则会 ITK 生成的库文件编译成 DLL 动态链接库形式.),
勾选Advanced之后更改CMAKE_INSTALL_PREFIX(表示编译ITK后生成的 lib 及头文件等安装路径)目录
可以设置为 D:/I_VTK/ITK
8. 在 D:\I_VTK\ITK\ITK_bin目录下找到
具体方法:打开D:\I_VTK\ITK\ITK_bin里面的ITK.sln文件,雷同VTK的生成解决方案,点击:生成->生成解决方案。如果没有错误,在解决方案里面找到Install文件,选中点击右键->仅用于项目->仅生成INSTALL。(如果编译过程中有错误,应该删除D:\I_VTK\ITK\ITK_bin里面的文件,重新安装)
9.由于2010不需要添加lib等库文件、包含文件;
环境变量设置:我的电脑->属性->高级->环境变量->添加:D:\I_VTK\ITK\ITK_bin;
将D:\I_VTK\ITK\bin中的.dll文件拷贝到C:\WINDOWS\system32中;
到此完成。