2016-04-16 12 views
0

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.

Antwort

0

Wenn Sie Bauzeiten minimieren wollen zuerst die Standardgruppen deaktivieren:

-DVTK_Group_StandAlone=OFF -DVTK_Group_Rendering=OFF 

Schalten Sie dann alle erforderlichen Module.

QVTKWidget ist Teil des Moduls vtkGUISupportQt so sollten Sie nur das (-DModule_vtkGUISupportQt=ON anstelle von VTK_Group_Qt) bauen.

Für CI Vorkompilieren VTK auf einer ähnlichen Maschine (z Ubuntu 14.04 Travis) betrachten, laden dann die resultierende zip des Pakets an einen Web-Host. Dann können Sie das vorgefertigte Paket im CI-Job herunterladen, entpacken und zwischenspeichern. Ein Beispiel finden Sie in this Travis setup.

Eine andere Option wäre die Verwendung des Paketmanagers Conan, für den ich kürzlich VTK packages erstellt habe.