Für ein aktuelles Projekt benötige ich nur eine Teilmenge von VTK-Modulen. Da es no binary installer for Windows VTK C++ (es scheint, Installer für Python-Bindungen sind die einzigen verfügbar) Ich muss VTK aus der Quelle erstellen. Da ich CI (appveyor und travis) verwende, muss ich VTK jedes Mal erstellen, wenn ich zu meinem Repo dränge. Daher möchte ich die Build-Zeiten auf ein Minimum beschränken.Nur Teilmenge von VTK mit Modulen erstellen
Dies sind die Header ich in meinem Projekt mit:
<QVTKWidget.h>
<vtkActor.h>
<vtkDataArray.h>
<vtkFloatArray.h>
<vtkMarchingCubes.h>
<vtkPointData.h>
<vtkPolyData.h>
<vtkPolyDataMapper.h>
<vtkPolyDataNormals.h>
<vtkRenderWindow.h>
<vtkRenderer.h>
<vtkSmartPointer.h>
<vtkStructuredPoints.h>
<vtkType.h>
<vtkUnsignedCharArray.h>
<vtkVersion.h>
Ich habe bereits versucht, alle benötigten Module mit dem Skript zu bestimmen: Utilities/Maintenance/WhatModulesVTK.py, aber immer noch einige Linker Fehler erhalten, wenn mein Projekt zu kompilieren. Es scheint, dass QVTKWidget nicht korrekt aufgenommen wird, aber ich könnte hier falsch liegen. WhatModulesVTK gibt mir:
All modules referenced in the files:
find_package(VTK COMPONENTS
vtkCommonCore
vtkCommonDataModel
vtkFiltersCore
vtkRenderingCore
vtkRenderingOpenGL
)
, die bereits ist nicht ganz richtig, da ich VTK verwenden 7.0.0 und es gibt keine vtkRenderingOpenGL, aber nur vtkRenderingOpenGL2. Mein CMakeLists.txt für mein Projekt sieht currenty wie:
…
find_package(OpenCV REQUIRED core imgproc calib3d highgui)
find_package(Boost COMPONENTS filesystem system REQUIRED)
find_package(VTK 7.0 COMPONENTS vtkCommonCore vtkCommonDataModel vtkFiltersCore
vtkRenderingCore vtkRenderingOpenGL2 REQUIRED)
find_package(Qt5Widgets REQUIRED QUIET)
…
VTK Verwendung als Abhängigkeit, ich bin es vorher wie dieses Gebäude:
$ git clone https://github.com/Kitware/VTK
$ cd VTK && git checkout tags/v7.0.0
$ mkdir build && cd build
$ cmake -DVTK_QT_VERSION:STRING=5
-DQT_QMAKE_EXECUTABLE:PATH=c:/Qt/5.6/msvc2015_64/bin/qmake.exe
-DVTK_Group_Qt:BOOL=ON
# Here should be all needed modules, e.g. -DModule_vtkXXXXX:BOOL=ON
-DBUILD_SHARED_LIBS:BOOL=ON ..
$ cmake --build .
Ist dieser Ansatz richtig im Allgemeinen? Welches Modul fehlt mir in der Reihenfolge.
Jede Hilfe wird geschätzt.