编译IGSTK5.2

来源:互联网 发布:2016年心动网络招聘 编辑:程序博客网 时间:2024/06/06 10:11

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文件。

 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库。
 

在将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:  http://www.cmake.org/cmake/resources/software.html 选择需要的版本.

    我使用的是 cmake-2.8.10.2-win32-x86.exe. 然后安装.

    若在安装过程中选择了在桌面显示图标, 则桌面会显示 CMakeSetup(deprecated) 这个图标, 而不是 CMAKE

    路径中的 CMake (cmake-gui) 图标. 这里使用 CMakeSetup(deprecated), 操作稍有不同. ITK 官网提供的

   文档中, 安装使用的也是 CMakeSetup.

 

2.下载 ITK: http://www.itk.org/ITK/resources/software.html , 这里下载的版本是

   InsightToolkit-4.3.2.zip

 

3. 在 D 盘新建文件夹: D:/I_VTK/ITK , 之所以要多建立一个 ITK 文件夹, 是为了以后 ITK, VTK 混合编程,

    这里暂时只编译 ITK

 

4. 解压  InsightToolkit-4.3.2.zip 到  D:/I_VTK/ITK, 重命名为InsightToolkit-4.3.2, 即 D:/I_VTK/ITK/ITK-3.14.0

 

5. 再建立一文件夹 ITK_bin, 作为 ITK 编译目标. D:\I_VTK\ITK\ITK_bin

ITK在vs2010下安装、搭建

 

6. 打开 CMAKE 进行配置. 假设你已经安装好 VS2010

    Where is the source code: 点击 Browse, 选择刚才 ITK 源码目录: D:\I_VTK\ITK\InsightToolkit-4.3.2

    Where to build the binaries: 点击 Browse, 选择 ITK 编译目标: D:\I_VTK\ITK\ITK_bin

 

7.点击 Configure 进行配置, 选择编译器,这里选择 Visual stdio 10, 等待,之后出现如下界面

ITK在vs2010下安装、搭建

为了加快安装进度,可以将选项BUILD TESTING 和BUILD EXAMPLES 都不勾选(ps:如果你想同时编译ITK 所提供的示例, 用于测试ITK 的示例, 则BUILD_EXAMPLES, BUILD_TESTING 选择为ON,但编译时间会很长. ),

勾选BUILD_SHARED_LIBS(ps:BUILD_SHARED_LIBS 若选择为 ON, 则会 ITK 生成的库文件编译成 DLL 动态链接库形式.),

勾选Advanced之后更改CMAKE_INSTALL_PREFIX(表示编译ITK后生成的 lib 及头文件等安装路径)目录

可以设置为 D:/I_VTK/ITK

ITK在vs2010下安装、搭建

  再次点击 Configure, 直至所有条目都变成灰色,表示配置成功, 点击 Generate确认.

ITK在vs2010下安装、搭建

 

8. 在 D:\I_VTK\ITK\ITK_bin目录下找到 ITK.sln, 点击,使用 VS2010进行编译.

具体方法:打开D:\I_VTK\ITK\ITK_bin里面的ITK.sln文件,雷同VTK的生成解决方案,点击:生成->生成解决方案。如果没有错误,在解决方案里面找到Install文件,选中点击右键->仅用于项目->仅生成INSTALL。(如果编译过程中有错误,应该删除D:\I_VTK\ITK\ITK_bin里面的文件,重新安装)

 则会在 D:/I_VTK/ITK 目录生成 lib, include 等文件夹

  lib目录存放的是D:/I_VTK/ITK/ITK-3.14.0-bin/bin/debug 中的 ITK lib 文件.

   include 则存放 ITK 所有的头文件. bin 目录存放的是 ITK 生成的一些可执行文件。

   这里没有必要选择 INSTALL, 因为 D:/I_VTK/ITK/ITK-3.14.0 中这些文件都已经存在.

   不过选择编译 INSTALL, 安装 ITK,会使目录结构更加清晰。不使用 CMAKE 自动配置时比较方便。

 

9.由于2010不需要添加lib等库文件、包含文件;

环境变量设置:我的电脑->属性->高级->环境变量->添加:D:\I_VTK\ITK\ITK_bin; 

将D:\I_VTK\ITK\bin中的.dll文件拷贝到C:\WINDOWS\system32中;

到此完成。





原创粉丝点击