vtk Zelfstudie
Aan de slag met vtk
Zoeken…
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
voorWhere is the source code:
- Selecteer
c:\vtk\build
voorWhere to build the binaries:
- Druk op
Configure
en selecteerVisual 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
- Een Visual Studio-oplossing:
- 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
-
- voor debug builds
- Start
- De IDE gebruiken
- Open de
VTK.sln
met Visual Studio 2015 en bouw deINSTALL.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
- Open de
-
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
omc:\vtk\lib
- Configureer de linker om te linken naar de vereiste
.lib
bestanden - Kopieer de vereiste DLL's naar de uitvoermap
- Configureer het zoekpad van de header van de compilator om
- 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:
- Installeer de laatste versie van CMake beschikbaar hier
- Download de nieuwste VTK hier .
- Maak een build-directory voor VTK
mkdir <path_to_build_directory
- 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 vanccmake <path_to_VTK_directory
- Ga naar de build-map en gebruik
make -j
(je hoeft niet-j
te gebruiken, maar de compilatie is erg lang. - Gebruik ten slotte
make install