安裝或設定

在 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 將開始為解決方案中列出的每個專案構建智慧感知
  • 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:

  1. 此處安裝最新版本的 CMake
  2. 這裡下載最新的 VTK。
  3. 為 VTK mkdir <path_to_build_directory 建立一個構建目錄
  4. 配置 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 配合使用
  5. 進入構建目錄並使用 make -j(你不必使用 -j 但是編譯真的很長。
  6. 最後使用 make install