ActiViz 7.0编译记录

前期准备:

  1. 虚拟机(VM,Vbox,hyper-V 随意)
  2. Window7 Sp1 x64
  3. .Net framework 4.0 
  4. Visual Stdio 2008
  5. Python 
  6. Cmake(3.11 和  2.8.8 两个都要下) 下载链接:点击打开链接
  7. CSV 下载链接:点击打开链接
  8. Git 下载链接:点击打开链接
  9. Doxygen(用来生成文档的) 下载链接:点击打开链接
  10. VTK 7.0 源码 下载链接:点击打开链接
  11. VTKData-7.0 下载链接: 点击打开链接
  12. GCC-XML源码 下载链接: 点击打开链接
  13. mummy源码  下载链接: 点击打开链接

上面工具准备的有点多~~

首先 虚拟机 装系统,装VS ,装Git,装Python,装Doxygen。

然后解压Cmake 把3.11和2.8.8分别解压,后面都用得到。

为了方便直接把CSV解压受扔到C:/Windows/System32里面吧。

下面解压GCC-XML源码,如果直接Git clone 下来的话应该目录应该如下图:


然后打开CMake2.8.2 选择源码目录,设置build路径,我是这样设置的

如果没有 CMAKE_INSTALL_PREFIX 这个选项的话,可以点Add Entry 添加,这是设置下面点击INSTALL 后安装的路径。


接下来点Confingure 然后Generate,然后打开这个解决方案选择Release,右键ALL_BUILD 点生成,然后 INSTALL 右键生成

然后就可以在上面设置的路径下比如我的是 C:\Program Files (x86)\gccxml\bin找到生成后的gccxml.exe,进入这个目录后右键管理员权限运行 gccxml_vcconfig.bat  配置gccxml。


================================这是一个分割线========================

下面开始编译mummy

同样是解压下载的mummy 或者Clone mummy,然后如下图所示:


找到Visual Studio 2008 命令提示 使用 sn -k  xxxxx.snk(xxxxx为自定义的名字,例如我的是xm.mummy.Runtime.snk)生成强签名。然后扔到Runtime文件夹里面。

在 Runtime 目录中找到cmakelist.txt 搜索 “IF(NOT Mummy_SNKEYFILE)” 在这句话上面插入

GET_FILENAME_COMPONENT(Mummy_SNKEYFILE "${CMAKE_CURRENT_SOURCE_DIR}/xm.mummy.Runtime.snk" ABSOLUTE) //xm.mummy.Runtime.snk为自定义的名字

然后在跟目录中找到cmakelist.txt,在这句

CMAKE_MINIMUM_REQUIRED(VERSION 2.8.3 FATAL_ERROR)  //我的是在第一行

下面添加

SET(gccxml_compiler "${CMAKE_CXX_COMPILER}") 
IF(MSVC80) 
    SET(gccxml_compiler "msvc8") 
ENDIF(MSVC80) 
IF(MSVC90) 
    SET(gccxml_compiler "msvc9") 
ENDIF(MSVC90) 
SET (GCCXML_EXTRA_D_ARGS "_HAS_TR1=0")

添加完后打开mummy根目录\Examples\Vehicles\wrappers\csharpmummy\CMakeLists.txt ,找到下面这块

  ADD_CUSTOM_COMMAND( 
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}.xml 
        COMMAND ${gccxml_EXECUTABLE} 
        ARGS 
            -fxml=${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}.xml 
            -fxml-start=_cable_ 
            ${gccxml_include_args} -DCABLE_CONFIGURATION 
            --gccxml-compiler ${CMAKE_CXX_COMPILER} 
            ${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}_gccxml.cxx 
        DEPENDS 
            ${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}_gccxml.cxx 
            ${header_fullpath} 
            ${gccxml_EXECUTABLE}

替换为

 ADD_CUSTOM_COMMAND( 
        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}.xml 
        COMMAND ${gccxml_EXECUTABLE} 
        ARGS 
            -fxml=${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}.xml 
            -fxml-start=_cable_ 
            ${gccxml_include_args} -DCABLE_CONFIGURATION 
            --gccxml-compiler ${gccxml_compiler} 
            ${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}_gccxml.cxx 
            -D${GCCXML_EXTRA_D_ARGS} 
        DEPENDS 
            ${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}_gccxml.cxx 
            ${header_fullpath} 
            ${gccxml_EXECUTABLE} 
        )



然后打开Cmake 2.8.8 (注意这里一定要用2.8.8 大于3.0的会出警告然后生成后会通不过编译),然后选择源码目录,build的路径:

点Configrue,这时候会提示出问题,然后让你选择gccxml的路径。选择刚才设置的gccxml的路径,注意这个csc_EXECUTABLE 是指定的.Net framework的路径,一定要选4.0,如果选3.5的话会后面编译的时候也会报错!


设置完后,点Generate 生成,然后打开项目 选择Release 然后右键ALL_BUILD 生成。等会mummy 应该就可以编译通过了~

++++++++++++++++++++++++++分界线+++++++++++++++++++++++++++++++++

下面就是编译VTK 7.0

同样是解压下载的VTK 或者Clone VTk,然后如下图所示:


打开Cmake 3.11.0,如下图设置:




注意VTK_RENDERING_BACKEND 这个选择 一点要选择OpenGL 不然后面 在编译ActiViz的时候会提示找不到一个文件。

然后点Generate ,打开Project,选择ALL_BUILD 喝杯茶 等着编译就好了~~

——————————————————应该是最后一条分界线——————————————

最后一步,开始编译ActiViz 

找到Visual Studio 2008 命令提示 使用 sn -k  xxxxx.snk(xxxxx为自定义的名字,例如我的是xm.VTK.snk)生成强签名。把生成的强签名文件 扔到  源代码根目录  里面。

然后打开根目录CMakelist.txt,搜索

if(AVDN_SNKEYFILE STREQUAL "")

在之上添加:

GET_FILENAME_COMPONENT(AVDN_SNKEYFILE "${CMAKE_CURRENT_SOURCE_DIR}/xm.VTK.snk" ABSOLUTE)  //注意把文件名改为自己的

搜索

set(gccxml_compiler "${CMAKE_CXX_COMPILER}") 
if(MSVC80) 
    set(gccxml_compiler "msvc8") 
endif() 
if(MSVC90) 
    set(gccxml_compiler "msvc9") 
endif()

在之下插入

SET (GCCXML_EXTRA_D_ARGS "_HAS_TR1=0")

然后搜索

  add_custom_command( 
        OUTPUT ${ActiVizDotNet_BINARY_DIR}/xml/${cxxclass}.xml 
        COMMAND ${gccxml_EXECUTABLE} 
            -fxml=${ActiVizDotNet_BINARY_DIR}/xml/${cxxclass}.xml 
            -fxml-start=_cable_ 
            ${gccxml_include_args} -DCABLE_CONFIGURATION 
            --gccxml-compiler ${gccxml_compiler} 
            ${ActiVizDotNet_BINARY_DIR}/xml/${cxxclass}_gccxml.cxx 
        DEPENDS 
            ${ActiVizDotNet_BINARY_DIR}/xml/${cxxclass}_gccxml.cxx 
            ${header} 
            ${gccxml_EXECUTABLE} 
        )

替换为

 ADD_CUSTOM_COMMAND( 
            OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}.xml 
            COMMAND ${gccxml_EXECUTABLE} 
            ARGS 
                -fxml=${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}.xml 
                -fxml-start=_cable_ 
                ${gccxml_include_args} -DCABLE_CONFIGURATION 
                --gccxml-compiler ${gccxml_compiler} 
                ${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}_gccxml.cxx 
                -D${GCCXML_EXTRA_D_ARGS} 
            DEPENDS 
                ${CMAKE_CURRENT_BINARY_DIR}/xml/${cxxclass}_gccxml.cxx 
                ${header} 
                ${gccxml_EXECUTABLE} 
            )

替换完成后搜索

vtkRenderingFreeTypeOpenGL //删了这个玩意

对就是删了上面这个

接着就是在Cmake 3.11.0 点击Configure ,如下图配置



点击Generate ,然后打开项目 选择ALL_BUILD 编译。

别急着喝茶,这时候可能会报一下错误

  1. fatal error C1083: Cannot open include file: 'vtksys/ios/sstream': No such file or directory
  2. error CS0246: The type or namespace name 'vtkRecti' could not be found (are you missing a using directive or an assembly reference?)
  3.  error LNK2019: unresolved external symbol "void __cdecl vtkRenderingContextOpenGL_AutoInit_Construct(void)
  4. "vtkOpenGLFreeTypeTextMapper" not found

第一个错误:找到文件vtkObjectEL.cxx,然后定位到出错的地方改为如下图:


第二错误:

在avtivizdotnet-build(即为自己设置的build路径)找到MummySettings.xml 然后添加 

<Class name="vtkRecti" wrappable="false"/>

第三个错误:

找到自己的VTK 的build的路径然后添加 vtkRenderingContextOpenGL-7.0.lib 到项目的C++链接列表,例如我的路径是

"C:\VTK-7.0.0-build\bin\Release\vtkRenderingOpenGL-7.0.dll"

第四个错误:

双击到出错的文件,然后把下面这句话注释掉~~

      using (Kitware.VTK.vtkOpenGLFreeTypeTextMapper o = Kitware.VTK.vtkOpenGLFreeTypeTextMapper.New()) 
        { 
            s = o.ToString(); 
        }

然后编译~~ 喝杯茶~~ 搞定~~~~




参考:

https://www.vtk.org/Wiki/VTK/CSharp/ActiViz/Build

http://vtk.1045678.n5.nabble.com/Building-Activiz-7-0-td5737877.html

https://www.vtk.org/Wiki/VTK/CSharp/ActiViz/Build#ActiViz.NET_source

http://vtk.1045678.n5.nabble.com/Activiz-with-VTK6-3-compile-error-CS1577-td5740018.html


阅读更多
文章标签: VTK ActiViz
个人分类: ActiViz Vtk
上一篇centos6 下apache2 配置https的谷歌学术反向代理
下一篇记录一下在Windows 下编译 PyTorch 0.5的经历吧~
想对作者说点什么? 我来说一句

Activiz使用

Activiz使用

u012526003 u012526003

2016-08-08 20:20:23

阅读数:1244

C#版VTK Activiz7.1版

2017年11月03日 93.33MB 下载

ActiViz .NET Users Guide

2012年07月29日 3.56MB 下载

没有更多推荐了,返回首页

关闭
关闭