安装或设置
在 Windows 7 上构建和安装
先决条件
- 如果你想从最新的源代码构建 VTK,你需要来自 Here 的 git,或者你可以下载代码的快照作为 zip 并解压缩到你的磁盘驱动器
- CMake 的
- Microsoft Visual Studio 2015
- 充足的自由空间 - 至少有几 GB 要安全,真正取决于你想要建造什么
做好准备
-
我喜欢保持干净,所以我通常创建 3 个文件夹,如下所示:
c:\vtk # c:\vtk\src # ‘code base’ folder c:\vtk\build # ‘out of source’ build folder c:\vtk\install # ‘install folder’ where the ‘installed’ files will reside
-
如果使用 git 方法,
- 打开命令提示符
- 改变工作目录
cd c:\vtk\src
- 克隆 git 存储库
git clone https://gitlab.kitware.com/vtk/vtk.git
。这可能需要一段时间,具体取决于你的 Internet 连接速度 - 如果你在代理后面工作,则需要设置 git 才能使用它。看到这个问题如何做到这一点。
-
如果使用 zip 方法,请将源代码解压缩到
c:\vtk\src
中
组态
- 启动 CMake GUI
- 选择
c:\vtk\src
作为Where is the source code:
- 选择
c:\vtk\build
作为Where to build the binaries:
- 点击
Configure
并选择Visual Studio 2015
作为所需的发电机 - 你将看到许多配置选项
- 我通常使用以下设置进行最小化构建
CMAKE_INSTALL_PREFIX
=c:\vtk\install
BUILD_SHARED_LIBS
打勾了BUILD_DOCUMENTATION
未分开BUILD_TESTING
未分开CMAKE_CXX_MP_FLAG
打勾了。这将使用所有 CPU 内核(在多核/多处理器系统上)来加速构建
- 保持击中
Configure
纠正任何错误,直到所有 RED 条目变为白色 - 点击
Generate
- 关闭 CMake GUI
建造
- 如果这一代人成功应该有
-
Visual Studio 解决方案:
c:\vtk\build\vtk.sln
-
一堆项目文件 -
ALL_BUILD.vcxproj INSTALL.vcxproj vtkCompileTools.vcxproj VTKData.vcxproj ZERO_CHECK.vcxproj
-
- 你可以使用命令行或使用 IDE 来构建它
- 我更喜欢命令行,因为它通常更快并且使用更少的 RAM
- 使用命令行
- 启动
Developer Command Prompt For Visual Studio 2015
- 更改工作目录:
cd c:\vtk\build
- 启动 msbuild:
- 用于调试版本
msbuild /p:Configuration=Debug ALL_BUILD.vcxproj
msbuild /p:Configuration=Debug INSTALL.vcxproj
- 用于发布版本
msbuild /p:Configuration=Release ALL_BUILD.vcxproj
msbuild /p:Configuration=Release INSTALL.vcxproj
- 用于调试版本
- 启动
- 使用 IDE
- 使用 Visual Studio 2015 打开
VTK.sln
并构建INSTALL.vcxproj
- 这种技术通常较慢,因为 IDE 将开始为解决方案中列出的每个项目构建智能感知
- 使用 Visual Studio 2015 打开
c:\vtk\install
现在应该有一些新的文件夹bin
#包含 dll 文件lib
#包含 lib 文件cmake
share
include
#包含头文件
使用构建
- 要在 Visual C++项目中使用 VTK,必须使用
- 配置编译器头文件搜索路径以包含
c:\vtk\include\vtk-<version>
- 配置链接器库文件搜索路径以包含
c:\vtk\lib
- 配置链接器以链接到所需的
.lib
文件 - 将所需的 DLL 复制到输出文件夹
- 配置编译器头文件搜索路径以包含
- 我已经整理了一个小的道具文件来处理
c:\vtk\vtk.vsprops
的所有四个任务
<?xml version="1.0" encoding="UTF-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VTK_ROOT_DIR>$(MSBuildThisFileDirectory)</VTK_ROOT_DIR>
<VTK_BIN_DIR>$(VTK_ROOT_DIR)\bin</VTK_BIN_DIR>
<VTK_INC_DIR>$(VTK_ROOT_DIR)\include\vtk-7.0</VTK_INC_DIR>
<VTK_LIB_DIR>$(VTK_ROOT_DIR)\lib</VTK_LIB_DIR>
</PropertyGroup>
<PropertyGroup>
<BuildDependsOn>CopyVTKBinariesList;$(BuildDependsOn);</BuildDependsOn>
</PropertyGroup>
<Target Name="CopyVTKBinariesList">
<ItemGroup>
<VtkBinaries Include="$(VTK_BIN_DIR)\*.dll" />
</ItemGroup>
<Copy SourceFiles="@(VtkBinaries)"
DestinationFiles="@(VtkBinaries->'$(OutDir)\%(RecursiveDir)%(Filename)%(Extension)')"
SkipUnchangedFiles="true" />
</Target>
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(VTK_INC_DIR);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<AdditionalLibraryDirectories>$(VTK_LIB_DIR);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>vtkalglib-7.0.lib;vtkChartsCore-7.0.lib;vtkCommonColor-7.0.lib;vtkCommonComputationalGeometry-7.0.lib;vtkCommonCore-7.0.lib;vtkCommonDataModel-7.0.lib;vtkCommonExecutionModel-7.0.lib;vtkCommonMath-7.0.lib;vtkCommonMisc-7.0.lib;vtkCommonSystem-7.0.lib;vtkCommonTransforms-7.0.lib;vtkDICOMParser-7.0.lib;vtkDomainsChemistry-7.0.lib;vtkDomainsChemistryOpenGL2-7.0.lib;vtkexoIIc-7.0.lib;vtkexpat-7.0.lib;vtkFiltersAMR-7.0.lib;vtkFiltersCore-7.0.lib;vtkFiltersExtraction-7.0.lib;vtkFiltersFlowPaths-7.0.lib;vtkFiltersGeneral-7.0.lib;vtkFiltersGeneric-7.0.lib;vtkFiltersGeometry-7.0.lib;vtkFiltersHybrid-7.0.lib;vtkFiltersHyperTree-7.0.lib;vtkFiltersImaging-7.0.lib;vtkFiltersModeling-7.0.lib;vtkFiltersParallel-7.0.lib;vtkFiltersParallelImaging-7.0.lib;vtkFiltersProgrammable-7.0.lib;vtkFiltersSelection-7.0.lib;vtkFiltersSMP-7.0.lib;vtkFiltersSources-7.0.lib;vtkFiltersStatistics-7.0.lib;vtkFiltersTexture-7.0.lib;vtkFiltersVerdict-7.0.lib;vtkfreetype-7.0.lib;vtkGeovisCore-7.0.lib;vtkglew-7.0.lib;vtkhdf5-7.0.lib;vtkhdf5_hl-7.0.lib;vtkImagingColor-7.0.lib;vtkImagingCore-7.0.lib;vtkImagingFourier-7.0.lib;vtkImagingGeneral-7.0.lib;vtkImagingHybrid-7.0.lib;vtkImagingMath-7.0.lib;vtkImagingMorphological-7.0.lib;vtkImagingSources-7.0.lib;vtkImagingStatistics-7.0.lib;vtkImagingStencil-7.0.lib;vtkInfovisCore-7.0.lib;vtkInfovisLayout-7.0.lib;vtkInteractionImage-7.0.lib;vtkInteractionStyle-7.0.lib;vtkInteractionWidgets-7.0.lib;vtkIOAMR-7.0.lib;vtkIOCore-7.0.lib;vtkIOEnSight-7.0.lib;vtkIOExodus-7.0.lib;vtkIOExport-7.0.lib;vtkIOGeometry-7.0.lib;vtkIOImage-7.0.lib;vtkIOImport-7.0.lib;vtkIOInfovis-7.0.lib;vtkIOLegacy-7.0.lib;vtkIOLSDyna-7.0.lib;vtkIOMINC-7.0.lib;vtkIOMovie-7.0.lib;vtkIONetCDF-7.0.lib;vtkIOParallel-7.0.lib;vtkIOParallelXML-7.0.lib;vtkIOPLY-7.0.lib;vtkIOSQL-7.0.lib;vtkIOVideo-7.0.lib;vtkIOXML-7.0.lib;vtkIOXMLParser-7.0.lib;vtkjpeg-7.0.lib;vtkjsoncpp-7.0.lib;vtklibxml2-7.0.lib;vtkmetaio-7.0.lib;vtkNetCDF-7.0.lib;vtkNetCDF_cxx-7.0.lib;vtkoggtheora-7.0.lib;vtkParallelCore-7.0.lib;vtkpng-7.0.lib;vtkproj4-7.0.lib;vtkRenderingAnnotation-7.0.lib;vtkRenderingContext2D-7.0.lib;vtkRenderingContextOpenGL2-7.0.lib;vtkRenderingCore-7.0.lib;vtkRenderingFreeType-7.0.lib;vtkRenderingImage-7.0.lib;vtkRenderingLabel-7.0.lib;vtkRenderingLOD-7.0.lib;vtkRenderingOpenGL2-7.0.lib;vtkRenderingVolume-7.0.lib;vtkRenderingVolumeOpenGL2-7.0.lib;vtksqlite-7.0.lib;vtksys-7.0.lib;vtktiff-7.0.lib;vtkverdict-7.0.lib;vtkViewsContext2D-7.0.lib;vtkViewsCore-7.0.lib;vtkViewsGeovis-7.0.lib;vtkViewsInfovis-7.0.lib;vtkzlib-7.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>
-
上面的 vsprops 文件复制了
c:\vtk\bin
文件夹中的所有可用 dll。 -
确保 DLL 可以定位的另一种方法是使用 alter PATH 环境变量进行调试会话,并将 VTK 二进制文件路径作为加载依赖项时要搜索的第一个目录。以下片段可以代替
CopyVTKBinariesList
任务来完成此任务。<PropertyGroup> <LocalDebuggerEnvironment>PATH=$(VTK_BIN_DIR);%PATH%;$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment> </PropertyGroup>
-
对于最终部署,你可能希望使用 Dependency Walker 之类的工具来跟踪使用哪些 dll 及其依赖项,并且仅绑定那些用于重新分发的 dll。
-
要在 Visual C++项目中使用 props 文件,你可以使用 Visual Studio 中的 Property Manager 工具(Menu:View => Property Manager)或使用文本编辑器编辑 vcxproj,并在其他项目导入下面添加以下行
<Import Project="C:\vtk\vtk.vsprops" />
。
打扫干净
- 如果你想恢复一些磁盘空间,你可以删除
c:\vtk\build
文件夹,但缺点是你无法调试到 vtk
卸载
- 如果你不想再使用 VTK,只需删除
c:\vtk
文件夹即可
MacOSX 和 Unix:
- 在此处安装最新版本的 CMake
- 在这里下载最新的 VTK。
- 为 VTK
mkdir <path_to_build_directory
创建一个构建目录 - 配置
ccmake <path_to_VTK_directory -G "UNIX Makefiles" \ -DVTK_USE_QVTK:BOOL=ON \ -DVTK_USE_CARBON:BOOL=ON \ -DCMAKE_INSTALL_PREFIX=/usr/local \ -DVTK_USE_GUISUPPORT:BOOL=ON
或使用 GUI 与ccmake <path_to_VTK_directory
配合使用 - 进入构建目录并使用
make -j
(你不必使用-j
但是编译真的很长。 - 最后使用
make install