[英]Building only subset of VTK with modules
对于当前项目,我只需要一部分VTK模块。 由于没有使用VTK C ++的Windows二进制安装程序(似乎Python绑定的安装程序是唯一可用的),我需要从源代码构建VTK。 此外,因为我正在使用CI(appveyor和travis),所以每次我推送我的仓库时都需要构建VTK,因此我希望将构建时间保持在最低限度。
这些是我在项目中使用的标题:
<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>
我已经尝试使用脚本确定所有需要的模块: Utilities / Maintenance / WhatModulesVTK.py ,但在编译项目时仍然会遇到一些链接器错误。 似乎没有正确包含QVTKWidget,但我可能在这里错了。 WhatModulesVTK给了我:
All modules referenced in the files:
find_package(VTK COMPONENTS
vtkCommonCore
vtkCommonDataModel
vtkFiltersCore
vtkRenderingCore
vtkRenderingOpenGL
)
这已经不太对了,因为我使用VTK 7.0.0并且没有vtkRenderingOpenGL,但只有vtkRenderingOpenGL2。 我的项目currenty的CMakeLists.txt看起来像:
…
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作为依赖项,我正在预先构建它,如下所示:
$ 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 .
这种方法一般是否正确? 我错过了什么模块。
任何帮助表示赞赏。
如果要最小化构建时间,请先禁用默认组:
-DVTK_Group_StandAlone=OFF -DVTK_Group_Rendering=OFF
然后打开所有必需的模块。
QVTKWidget
是模块vtkGUISupportQt
一部分,所以你应该构建它( -DModule_vtkGUISupportQt=ON
而不是VTK_Group_Qt
)。
对于CI,考虑在类似的机器上预编译VTK(例如,Travis的Ubuntu 14.04),然后将包的结果zip上传到Web主机。 然后,您可以在CI作业中下载,解压缩和缓存预构建的包。 有关示例,请参阅此Travis设置 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.