VTK在Windows上的安装

news2025/1/10 2:42:57

本章介绍在计算机系统上安装VTK。在Microsoft Windows上,可以安装预编译的vtk.exe,也可以从源码自行编译vtk软件。您可能希望了解系统架构,阅读会使编译过程更容易跟踪。如果遇到问题,可以联系vtkusers邮件列表。

2.1 概述

VTK在许多不同的计算机平台上编译和运行。平台指的是操作系统、硬件配置和编译器的各种组合。由于可能存在大量的组合,VTK的可执行文件发布通常是不可行的。因此,要安装VTK,您必须编译并链接源代码以生成库和可执行文件。此处仅介绍Windows平台上C++版本的编译与开发。

2.2 在Windows上安装VTK

在Windows下,有两种类型的VTK安装。一是可执行文件安装,它允许运行预编译的可执行文件。二是完整的源代码安装,需要编译VTK源代码(生成C++库)和VTK包装器代码(生成Java、Tcl和Python可执行文件)。在这两种类型的安装中,二进制安装要容易得多。源代码安装的优点是,您可以监控、调试和修改VTK代码。然而,即使您选择二进制安装,您仍然可以通过多种方式扩展VTK创建自己的类,使用运行时可编程过滤器,并在运行时用自己版本的类替换VTK类。

可执行文件安装

安装vtk.exe,运行安装程序VTK-X.X.X-win32.exe,它将显示一个安装GUI。安装程序文件名中的“X.X.X”表示用于编译该程序的VTK版本号。您也可以下载VTK源目录树和VTKData目录中相应的*.zip文件。当我们发布新版本的VTK时,我们会通过VTK.org上的链接提供下载页面。在vtkusers邮件列表上查看发布公告。

源码安装

要开发C++应用程序并扩展VTK,需要安装源代码。首先,您需要确保您的机器能够编译VTK源代码版本。您需要在计算机上安装一个C++编译器。本指南中的说明适用于VTK的Microsoft Visual Studio 2015或更高版本。我们还支持Borland C++编译器、Cygwin或MinGW下的gcc、NMake、Microsoft Visual C++free Edition。如果尚未安装C++编译器,必须先安装。

安装CMake. 要编译VTK,首先需要安装CMake。可以从http://www.cmake.org安装CMake安装包。

运行CMake.在安装了C++编译器、安装了CMake之后,就可以运行CMake了。要运行CMake,在“开始”菜单中的“程序”->“CMake”->“CMakeSetup”下应该有一个CMake条目。CMakeSetup.exe接口(2-2)是一个简单的程序,允许您根据特定的机器和VTK所需的选项自定义编译。首先,您必须告诉CMakeSetup VTK的源代码目录,以及要将VTK二进制文件的目录。您可以使用浏览按钮或手动键入路径来指定这些目录。一旦选择了源目录和二进制目录,您应该单击Configure按钮。第一次单击配置按钮时,CMake将显示一个对话框,您可以从中选择用于编译VTK的生成系统。然后,CMakeSetup GUI将填充在CMake缓存中找到的变量和值列表。第一次运行时,所有变量都将显示为红色。红色表示缓存项是在上一个配置步骤中生成或更改的。

 

此时,您可以自定义VTK编译。例如,如果要启用VTK的Tcl包装功能,请在缓存值编辑器(cache values editor)中向下滚动到条目VTK_WRAP_TCL,然后单击该值将其从OFF切换到ON。之后,再次单击Configure按钮。这将导致大多数值变为灰色,任何新值都将显示为红色。如果您从二进制安装中安装了Tcl/Tk,任何新值则不应将NOFOUND作为值找到;如果需要,则必须使用CMake接口手动指定这些路径。要在CMake界面中设置任何值,请单击显示值的变量右侧。根据变量的类型,可能会有一个文件选择器、编辑框或下拉菜单,允许您编辑值。

VTK的一些重要的缓存值如下:

BUILD_SHARED_LIBS —如果此布尔值设置为“是”,则将生成DLL或共享库。如果为否,则将编译静态库。默认为静态库。静态库在某种程度上更易于使用,因为在运行可执行文件时,它们不需要位于您的路径中。可执行文件将是自包含的。这对于基于VTK的应用程序的发布是首选。

VTK_WRAP_TCL — 这决定了TCL包装器是否可用

VTK_WRAP_PYTHON — 这决定了Python包装器是否可用

VTK_WRAP_JAVA — 这决定了JAVA包装器是否可用

要获取CMake中任何变量的联机帮助,只需右键单击该值并选择“Help for Cache Entry”。大多数默认值应该是正确的。

继续单击Configure,直到不再有任何红色值,并且您对所有值都满意为止。此时,您可以单击“OK”按钮。这将导致CMake写出所选生成类型的生成文件。对于Microsoft,项目文件将位于您选择的二进制路径中。您可以选择Debug、Release、MinSizeRel(最小大小发布)和RelWithDebInfo(包含调试信息的发布)。您可以选择ALL_BUILD项目,并像编译任何其他Visual Studio项目一样对其进行编译。

编译VTK后,生成的所有库和可执行文件都将位于您指定给CMake的二进制目录中名为bin的子文件夹中(除非您更改了CMake中的EXECUTABLE_OUTPUT_PATH或LIBRARY_OUTPUT_PATH变量)。

(注意:不要使用MSVC++“Rebuild All”(全部编译)菜单选择来重编译源代码。这将删除所有CMakeLists.txt文件,这些文件将作为编译过程的一部分自动重新生成。MSVC随后将尝试重新加载这些文件,并将导致错误。相反,要重编译所有内容,请删除VTK二进制目录,重新运行CMake,然后执行正常编译。)

如果在编译VTK时启用了BUILD_SHARED_LIBS,客户端应用程序将需要在运行时定位并加载VTK DLL。您的应用程序可以通过多种不同的方式在运行时找到VTK DLL。每种方式都有利弊。最简单的方法是确保应用程序和VTK DLL存在于同一目录中。您可以将所有VTK DLL复制到应用程序的目录中,也可以使用自己应用程序的CMakeLists文件中的EXECUTABLE_OUTPUT_PATH将应用程序编译到VTK DLL编译的同一目录中。如果应用程序的可执行文件和VTK DLL存在于同一目录中,那么一切都应该正常工作。这些方法的“优点”是简单。缺点是:如果要复制VTK DLL,则需要确保在更新和重编译VTK时再次复制它们;如果您的应用程序的编译输出与VTK的编译输出混合在一起,那么在必要时可能很难确定哪个编译输出来自哪个项目。

另一种选择是修改PATH环境变量,以便应用程序可以找到VTK DLL,即使它们不在同一目录中。然而,在这个备选方案中,有几种方法可以完成任务。您可以设置一个命令提示符,其中仅在该命令提示符中修改路径,然后从那里启动应用程序,也可以更改用户的PATH环境变量或系统范围的PATH环境变量。建议更改用户或系统范围的PATH环境变量,除非您需要在同一台计算机上有多个不同的VTK版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/20183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【HTML + CSS】笔记

页面设计 1.HTML&#xff1a;结构框架 2.CSS 3.JS HTML&#xff1a;超文本标记语言 <...>&#xff1a;标签/元素 <!DOCTYPE html>&#xff1a;解释文档类型为html head区域常用标签 <base> 使用后浏览器不再使用当前文档的URL&#xff0c;而使用指定的…

web前端设计与开发期末作品/期末大作业-疫情

Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业&#xff0c;击疫情致敬逆行者感人类题材 | 致敬逆行者网页设计作品 | 大学生抗疫感动专题网页设计作业模板 | 等网站的设计与制作 | HTML期末大学生网页设计作业 HTML&#xff1a…

Windows之应用安装程序 —— winget

大家都用过Linux中的应用程序安装工具&#xff0c;如yum、apt、rpm等工具进行安装自己想要的一些工具或则软件之类的&#xff0c;当然Linux操作系统还是很强大的有很多类似的命令来安装我们所需要的程序&#xff0c;但是windwos有没有类似于windows这样的应用安装程序呢&#x…

可解释的AI:用LIME解释扑克游戏

可解释的AI&#xff08;XAI&#xff09;一直是人们研究的一个方向&#xff0c;在这篇文章中&#xff0c;我们将看到如何使用LIME来解释一个模型是如何学习扑克规则的。在这个过程中&#xff0c;我们将介绍: 如何将LIME应用到扑克游戏中;LIME如何工作;LIME 的优点和缺点是什么。…

免费查题系统搭建

免费查题系统搭建 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&#xff08;点击跳…

STM32存储器组织-STM32存储器映像-嵌入式SRAM-STM32位段-嵌入式闪存-STM32启动配置

STM使用说明第二篇【1】STM32存储器组织【2】STM32存储器映像【3】嵌入式SRAM【4】STM32位段【5】嵌入式闪存【6】STM32启动配置【1】STM32存储器组织 程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。 数据字节以小端格式存放在存储器中。一…

【Java】IO流 - 节点流和处理流【Buffered】

文章目录节点流和处理流BufferedReaderBufferedWriterBufferd拷贝BufferedInputStream/BufferedOutputStream节点流和处理流 数据源就是存放数据的地方&#xff0c;可以是 文件、数组 等等&#xff1b; 节点流是比较底层的&#xff0c;直接操作二进制数据 包装流&#xff08;处…

石英砂过滤器 多介质过滤器 活性炭过滤器

石英砂过滤器简介 石英砂过滤器属于机械过滤器的一种为压力式过滤器&#xff0c;采用ABS蘑菇型水帽布水&#xff0c;内装若干种规格精制石英砂滤料&#xff0c;阻力小&#xff0c;通量大。利用过滤器内所装的填料来截留去除水中悬浮微粒和胶体杂质。当过滤器因滤层污脏&#x…

解决git配置多个SSH公钥的问题

项目场景&#xff1a; 之前跟同事共用一个项目私密仓库&#xff0c;现需拆分成两个仓库&#xff0c;结果同事提出他不想换&#xff0c;让我这边再创建一个新仓库。 那么接下来就遇到一个情况&#xff0c;原来仓库的公钥我并不想删除&#xff0c;还想继续使用&#xff0c…

Ubuntu20.04沉浸式装机

Ubuntu20.04沉浸式装机 文章目录Ubuntu20.04沉浸式装机前言1.装机之后系统更新&#xff0c;设置软件源2.安装系统驱动Notice3 安装CUDA及CuDNN4 常用软件安装4.1 常用软件安装4.2 Typora安装4.3 docker安装4.4 nvidia-docker 安装4.5 pypcd 安装4.6 PCL安装环境安装4.7 Eigen安…

Python学习基础笔记七——元组

元组tuple&#xff0c;跟列表相似&#xff0c;元组不能在原处修改。元组不支持任何方法调用&#xff0c;但是元组具有列表的大多数属性。 但是要记住的是&#xff1a;元组的不可变性只适用于元组本身&#xff0c;并非其内容。例如元组内部的列表是可以像往常一样修改的。 元组常…

Go1.20 arena新特性示例详解

当时我们还想着 Go 团队应该不会接纳&#xff0c;至少不会那么快&#xff1a; 懒得翻也可以看我再次道来&#xff0c;本文提到的提案《proposal: arena: new package providing memory arenas》&#xff0c;这其中的 Arena 将会是一个突破项。 快速背景 Arena 指的是一种从一个…

Java接口的应用

目标&#xff1a;总结Comparable接口以及compareTo方法、comparator接口中compare方法比较器、toString方法、equals方法、hashCode方法、Cloneable接口以及深浅拷贝 比较对象中内容的大小【Comparable接口以及compareTo方法】 例如&#xff1a;学生类&#xff1a;成员有姓名、…

计算机网络4小时速成:数据链路层,功能,封装成帧,透明传输,差错控制,PPP协议,广播信道,以太网,MAC层,设备

计算机网络4小时速成&#xff1a;数据链路层&#xff0c;功能&#xff0c;封装成帧&#xff0c;透明传输&#xff0c;差错控制&#xff0c;PPP协议&#xff0c;广播信道&#xff0c;以太网&#xff0c;MAC层&#xff0c;设备 2022找工作是学历、能力和运气的超强结合体&#x…

Linux C/C++ 学习笔记(四):MYSQL安装与远程连接

问题及解决 对配置文件中绑定的IP地址进行修改 通过Mysql workbench连接MySQL数据库时出现错误 需要对mysq的配置文件进行修改&#xff0c;配置文件是/etc/mysql下的my.cnf 绑定的地址是一个回环地址&#xff0c;不能对外使用 将其修改为0.0.0.0。 0.0.0.0不是一个真正意义…

MySQL主从数据库(主读从写)

MySQL多数据源MySQL主从数据库&#xff08;主读从写&#xff09;1. 多数据源的实现原理1.1 配置多数据源yml文件1.2 创建配置类1.3 动态切换数据源类继承AbstractRoutingDataSource 类1.4 测试类测试1.5 附枚举代码1.6 总结2. 多数据源切换方式&#xff08;优化&#xff09;2.1…

HTML做一个简单漂亮的宠物网页(纯html代码) 带视频 带音乐 带报告

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 宠物网页设计 | 保护动物网页 | 鲸鱼海豚主题 | 保护大象 | 等网站的设计与制作 | HTML宠物网页设计 | HTML期末大学生网页设计作业 HTML&#xff1a;…

酒水推荐商城|基于Springboot实现酒水商城系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

FLP、CAP和BASE

FLP不可能原理 FLP定理 FLP Impossibility&#xff08;FLP 不可能性&#xff09;是分布式领域中一个非常著名的定理&#xff0c;定理的论文是由 Fischer, Lynch and Patterson 三位作者于1985年发表 It is impossible to have a deterministic protocol that solves consens…

通过WebSocket实现实时系统通知,以后再也不能装作没看到老板的通知了~~

&#x1f4de; 文章简介&#xff1a;WebSocket实时通知Demo &#x1f4a1; 创作目的&#xff1a;因为公司正在从零搭建CRM&#xff0c;其中有一个需求是系统通知管理&#xff0c;老板发布通知给员工。简单的用数据库实现感觉缺少一些实时性&#xff0c;不是那么生动。于是想到了…