vtkAan de slag met vtk


Opmerkingen

Deze sectie geeft een overzicht van wat vtk is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen vtk vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de documentatie voor vtk nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Installatie of instellingen

Bouwen en installeren op Windows 7

voorwaarden

  • Als je VTK van de nieuwste bronnen wilt bouwen, heb je git van Here nodig of je kunt een snapshot van de code downloaden als zip en uitpakken op je diskdrive
  • CMake
  • Microsoft Visual Studio 2015
  • Veel vrije ruimte - minimaal een paar GB voor de zekerheid, echt afhankelijk van wat u allemaal wilt bouwen

Klaar maken

  • Ik hou dingen graag schoon, dus maak ik meestal 3 mappen zoals:
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
 
  • Als je de git-methode gebruikt,

    • open een opdrachtprompt
    • werkmap wijzigen cd c:\vtk\src
    • kloon de git repository git clone https://gitlab.kitware.com/vtk/vtk.git . Dit kan enige tijd duren, afhankelijk van de snelheid van uw internetverbinding
    • Als je achter een proxy werkt, moet je git instellen om het te gebruiken. Zie deze vraag over hoe dat te doen.
  • Als u de zip-methode gebruikt, pak dan de broncode uit in c:\vtk\src

Configuratie

  • Start de CMake GUI
  • Selecteer c:\vtk\src voor Where is the source code:
  • Selecteer c:\vtk\build voor Where to build the binaries:
  • Druk op Configure en selecteer Visual Studio 2015 als de vereiste generator
  • U krijgt een aantal configuratie-opties te zien
  • Ik gebruik over het algemeen de volgende instellingen voor een minimale build
    • CMAKE_INSTALL_PREFIX = c:\vtk\install
    • BUILD_SHARED_LIBS aangevinkt
    • BUILD_DOCUMENTATION
    • BUILD_TESTING
    • CMAKE_CXX_MP_FLAG aangevinkt. Hiermee worden alle CPU-kernen (op multicore / multiprocessorsystemen) gebruikt om de build te versnellen
  • Keeping Hitting Configure corrigeren van eventuele fouten totdat alle RODE vermeldingen WIT worden
  • Druk op Generate
  • Sluit CMake GUI

Gebouw

  • Als de generatie succesvol was, zou er moeten zijn
    • Een Visual Studio-oplossing:
      c:\vtk\build\vtk.sln
       
    • Een aantal projectbestanden -
      ALL_BUILD.vcxproj
      INSTALL.vcxproj
      vtkCompileTools.vcxproj
      VTKData.vcxproj
      ZERO_CHECK.vcxproj
       
  • U kunt dit bouwen met behulp van een opdrachtregel of met de IDE
  • Ik geef de voorkeur aan de opdrachtregel omdat deze over het algemeen sneller is en minder RAM gebruikt
  • Gebruik de opdrachtregel
    • Start Developer Command Prompt For Visual Studio 2015
    • cd c:\vtk\build wijzigen: cd c:\vtk\build
    • Start msbuild:
      • voor debug builds
        • msbuild /p:Configuration=Debug ALL_BUILD.vcxproj
        • msbuild /p:Configuration=Debug INSTALL.vcxproj
      • voor release builds
        • msbuild /p:Configuration=Release ALL_BUILD.vcxproj
        • msbuild /p:Configuration=Release INSTALL.vcxproj
  • De IDE gebruiken
    • Open de VTK.sln met Visual Studio 2015 en bouw de INSTALL.vcxproj
    • Deze techniek is meestal langzamer omdat de IDE begint met het bouwen van intellisense voor elk van de projecten die in de oplossing worden vermeld
  • c:\vtk\install zou nu enkele nieuwe mappen moeten hebben
    • bin # bevat de dll-bestanden
    • lib # bevat de lib-bestanden
    • cmake
    • share
    • include # bevat de header-bestanden

Met behulp van de build

  • Om VTK in een Visual C ++ project te gebruiken, moet men
    • Configureer het zoekpad van de header van de compilator om c:\vtk\include\vtk-<version>
    • Configureer het zoekpad van de c:\vtk\lib om c:\vtk\lib
    • Configureer de linker om te linken naar de vereiste .lib bestanden
    • Kopieer de vereiste DLL's naar de uitvoermap
  • Ik heb een klein rekwisietenbestand samengesteld om alle vier de taken uit te voeren 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>
 
  • Het bovenstaande vsprops-bestand kopieert alle beschikbare dll's in de map c:\vtk\bin .

  • Een alternatieve manier om ervoor te zorgen dat de DLL's kunnen worden gevonden, is door de omgevingsvariabele PATH te wijzigen voor de foutopsporingssessie en het binaire pad VTK als de eerste map te doorzoeken bij het laden van afhankelijkheden. Het onderstaande fragment kan in plaats van de taak CopyVTKBinariesList om dit te doen.

    <PropertyGroup>
      <LocalDebuggerEnvironment>PATH=$(VTK_BIN_DIR);%PATH%;$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
    </PropertyGroup>
    
  • Voor de uiteindelijke implementatie wilt u misschien een tool zoals Dependency Walker gebruiken om op te sporen welke dll's en hun afhankelijkheden worden gebruikt en alleen die bundelen voor herdistributie.

  • Als u het rekwisietenbestand in een Visual C ++ -project wilt gebruiken, kunt u het hulpprogramma Property Manager in Visual Studio (Menu: View => Property Manager) gebruiken of de vcxproj bewerken met een teksteditor en deze volgende regel toevoegen <Import Project="C:\vtk\vtk.vsprops" /> onder de invoer van andere projecten.

Schoonmaken

  • Als u wat schijfruimte wilt herstellen, kunt u de map c:\vtk\build , maar het nadeel is dat u niet kunt debuggen naar vtk

Ongeïnstalleerd

  • Verwijder eenvoudig de map c:\vtk als u niet meer wilt VTK

MacOSX en Unix:

  1. Installeer de laatste versie van CMake beschikbaar hier
  2. Download de nieuwste VTK hier .
  3. Maak een build-directory voor VTK mkdir <path_to_build_directory
  4. Configureer met 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 gebruik de GUI om dit te gebruiken met behulp van ccmake <path_to_VTK_directory
  5. Ga naar de build-map en gebruik make -j (je hoeft niet -j te gebruiken, maar de compilatie is erg lang.
  6. Gebruik ten slotte make install