Démarrer avec vtk

Installation ou configuration

Construction et installation sur Windows 7

Conditions préalables

  • Si vous souhaitez créer VTK à partir des dernières sources, vous avez besoin de git à partir de [ici] (https://git-for-windows.github.io/) ou vous pouvez télécharger un instantané du code sous forme de zip et le décompresser sur votre lecteur de disque
  • CMake *Microsoft Visual Studio 2015
  • Beaucoup d’espace libre - au moins quelques Go pour être du bon côté, en fonction de ce que vous voulez construire

Se préparer

  • J’aime garder les choses propres donc je crée généralement 3 dossiers comme ceci :
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
  • Si vous utilisez la méthode git,

    • open a command prompt
    • change working directory cd c:\vtk\src
    • clone the git repository git clone https://gitlab.kitware.com/vtk/vtk.git. This could take a while depending on your internet connection speed
    • If you are working behind a proxy, you will need to setup git to use it. See this question on how to do that.
  • Si vous utilisez la méthode zip, décompressez le code source dans c:\vtk\src

Configuration

  • Lancer l’interface graphique de CMake
  • Sélectionnez c:\vtk\src pour Où est le code source :
  • Sélectionnez c:\vtk\build pour Où compiler les binaires :
  • Cliquez sur “Configurer” et sélectionnez “Visual Studio 2015” comme générateur requis
  • Vous serez présenté avec un certain nombre d’options de configuration
  • J’utilise généralement les paramètres suivants pour une construction minimale
    • CMAKE_INSTALL_PREFIX = c:\vtk\install
    • BUILD_SHARED_LIBS ticked
    • BUILD_DOCUMENTATION unticked
    • BUILD_TESTING unticked
    • CMAKE_CXX_MP_FLAG ticked. This will use all the CPU cores (on multicore/multiprocessor systems) to speed up the build
  • Continuez à appuyer sur “Configurer” pour corriger les erreurs jusqu’à ce que toutes les entrées ROUGES deviennent BLANCHES
  • Appuyez sur “Générer”
  • Fermer l’interface graphique de CMake

Imeuble

  • Si la génération a réussi, il devrait y avoir
    • A Visual Studio Solution :
      c:\vtk\build\vtk.sln
      
    • A bunch of project files -
      ALL_BUILD.vcxproj
      INSTALL.vcxproj
      vtkCompileTools.vcxproj
      VTKData.vcxproj
      ZERO_CHECK.vcxproj
      
  • Vous pouvez le construire à partir d’une ligne de commande ou à l’aide de l’IDE
  • Je préfère la ligne de commande car elle est généralement plus rapide et utilise moins de RAM
  • En utilisant la ligne de commande
    • Launch Developer Command Prompt For Visual Studio 2015
    • Change working directory: cd c:\vtk\build
    • Launch msbuild:
      • for debug builds
        • msbuild /p:Configuration=Debug ALL_BUILD.vcxproj
        • msbuild /p:Configuration=Debug INSTALL.vcxproj
      • for release builds
        • msbuild /p:Configuration=Release ALL_BUILD.vcxproj
        • msbuild /p:Configuration=Release INSTALL.vcxproj
  • Utilisation de l’IDE
    • Open the VTK.sln with Visual Studio 2015 and build the INSTALL.vcxproj
    • This technique is usually slower as the IDE will start building intellisense for each of the projects listed in the solution
  • c:\vtk\install devrait maintenant avoir de nouveaux dossiers
    • bin # contains the dll files
    • lib # contains the lib files
    • cmake
    • share
    • include # contains the header files

Utilisation de la construction

  • Pour utiliser VTK dans un projet Visual C++, il faut
    • Configure the compiler header file search path to include c:\vtk\include\vtk-<version>
    • Configure the linker library file search path to include c:\vtk\lib
    • Configure the linker to link to the required .lib files
    • Copy the required DLLs to output folder
  • J’ai créé un petit fichier d’accessoires pour gérer les quatre tâches 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>
  • Le fichier vsprops ci-dessus copie toutes les dll disponibles dans le dossier c:\vtk\bin.

  • Une autre façon de s’assurer que les DLL peuvent être localisées consiste à utiliser la variable d’environnement PATH pour la session de débogage et à placer le chemin des fichiers binaires VTK comme premier répertoire à rechercher lors du chargement des dépendances. Le fragment ci-dessous peut remplacer la tâche CopyVTKBinariesList pour ce faire.

    <PropertyGroup>
      <LocalDebuggerEnvironment>PATH=$(VTK_BIN_DIR);%PATH%;$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
    </PropertyGroup>
    
  • Pour le déploiement final, vous pouvez utiliser un outil comme Dependency Walker pour suivre déterminer quelles dll et leurs dépendances sont utilisées et ne regrouper que celles destinées à la redistribution.

  • Pour utiliser le fichier props dans un projet Visual C++, vous pouvez soit utiliser l’outil Property Manager dans Visual Studio (Menu : View => Property Manager) ou modifier le vcxproj à l’aide d’un éditeur de texte et ajouter la ligne suivante <Import Project=" C:\vtk\vtk.vsprops" /> sous les autres importations de projet.

Nettoyer

  • Si vous souhaitez récupérer de l’espace disque, vous pouvez supprimer le dossier c:\vtk\build mais l’inconvénient est que vous ne pouvez pas déboguer dans vtk

Désinstallation

  • Supprimez simplement le dossier c:\vtk si vous ne voulez plus VTK

MacOSX et Unix :

  1. Installez la dernière version de CMake disponible [ici][1]
  2. Téléchargez le dernier VTK [ici][2].
  3. Créez un répertoire de construction pour VTK mkdir <path_to_build_directory
  4. Configurez avec 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 ou utilisez l’interface graphique pour le faire avec ccmake <path_to_VTK_directory
  5. Entrez dans le répertoire de construction et utilisez make -j (vous n’êtes pas obligé d’utiliser -j mais la compilation est vraiment longue.
  6. Enfin, utilisez make install

[1] : http://www.cmake.org/cmake/resources/software.html [2] : http://www.vtk.org/download/