Comenzando con vtk

Instalación o configuración

Construcción e Instalación en Windows 7

Requisitos previos

  • Si desea compilar VTK a partir de las fuentes más recientes, necesita git de [Aquí] (https://git-for-windows.github.io/) o puede descargar una instantánea del código como un zip y descomprimirlo en su unidad de disco
  • CMake *Microsoft Visual Studio 2015
  • Mucho espacio libre: al menos un par de GB para estar seguro, realmente dependiendo de lo que quieras construir

Preparándose

  • Me gusta mantener las cosas limpias, por lo que suelo crear 3 carpetas así:
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 usa el método 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 utiliza el método zip, descomprima el código fuente en c:\vtk\src

Configuración

  • Inicie la GUI de CMake
  • Seleccione c:\vtk\src para Dónde está el código fuente:
  • Seleccione c:\vtk\build para Dónde construir los archivos binarios:
  • Presiona Configurar y selecciona Visual Studio 2015 como el generador requerido
  • Se le presentarán una serie de opciones de configuración
  • Generalmente uso la siguiente configuración para una construcción mínima
    • 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
  • Seguir presionando Configurar corrigiendo cualquier error hasta que todas las entradas ROJAS se vuelvan BLANCAS
  • Presiona Generar
  • Cerrar la GUI de CMake

Edificio

  • Si la generación fue exitosa debe haber
    • 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
      
  • Puede construir esto usando una línea de comando o usando el IDE
  • Prefiero la línea de comandos ya que generalmente es más rápida y usa menos RAM
  • Usando la línea de comando
    • 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
  • Usando el 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 ahora debería tener algunas carpetas nuevas
    • bin # contains the dll files
    • lib # contains the lib files
    • cmake
    • share
    • include # contains the header files

Usando la compilación

  • Para usar VTK en un proyecto de Visual C++, uno tiene que
    • 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
  • He creado un pequeño archivo de accesorios para manejar las cuatro tareas 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>
  • El archivo vsprops anterior copia todos los archivos DLL disponibles en la carpeta c:\vtk\bin.

  • Una forma alternativa de asegurarse de que se puedan ubicar los archivos DLL es alterar la variable de entorno PATH para la sesión de depuración y colocar la ruta de los archivos binarios VTK como el primer directorio que se buscará al cargar las dependencias. El siguiente fragmento puede ser en lugar de la tarea CopyVTKBinariesList para hacer esto.

    <PropertyGroup>
      <LocalDebuggerEnvironment>PATH=$(VTK_BIN_DIR);%PATH%;$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
    </PropertyGroup>
    
  • Para la implementación final, es posible que desee utilizar una herramienta como Dependency Walker para realizar un seguimiento determina qué dlls y sus dependencias se usan y solo agrupa aquellos para la redistribución.

  • Para usar el archivo props en un proyecto de Visual C++, puede usar la herramienta Administrador de propiedades dentro de Visual Studio (Menú: Ver => Administrador de propiedades) o editar el vcxproj usando un editor de texto y agregar la siguiente línea <Import Project=" C:\vtk\vtk.vsprops" /> debajo de las otras importaciones del proyecto.

Limpiar

  • Si desea recuperar algo de espacio en disco, puede eliminar la carpeta c:\vtk\build pero la desventaja es que no puede depurar en vtk

Desinstalación

  • Simplemente elimine la carpeta c: \ vtk si ya no desea VTK

Mac OS X y Unix:

  1. Instale la última versión de CMake disponible aquí
  2. Descargue el último VTK aquí.
  3. Cree un directorio de compilación para VTK mkdir <path_to_build_directory
  4. Configure con 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 o use la GUI para hacerlo con ccmake <path_to_VTK_directory
  5. Ingrese al directorio de compilación y use make -j (no tiene que usar -j pero la compilación es muy larga.
  6. Finalmente usa make install