使用vtk 6.3和qt5构建libQVTK

时间:2015-10-13 12:09:37

标签: qt vtk qvtkwidget

是否可以使用qt5和vtk 6.3(或主干版本)构建qvtk库(和亲属)?

我从.run安装程序安装了qt5,一切安装正常,然后我从启用VTK_Group_Qt和正确设置qt路径的源代码构建了vtk 6.3。

似乎不是QVTK的任何特定选项或模块(qt的VTK小部件),因此我假设它是使用此配置构建的,但是当我尝试编译一些源代码时依靠QVTK我得到了错误:

/usr/bin/ld: cannot find -lvtkRendering
/usr/bin/ld: cannot find -lvtkGraphics
/usr/bin/ld: cannot find -lvtkHybrid
/usr/bin/ld: cannot find -lQVTK

有没有办法从VTK trunk创建这些库?我在任何地方都找不到任何迹象。

2 个答案:

答案 0 :(得分:2)

我很长时间都在努力解决这个问题,事实证明这是项目的CMakeLists.txt的一个问题。

对于那些正在努力解决同样问题的人,我会在这里发布错误和正确的版本:

WRONG:

public class MyModel {

    public string AorB { get; set; }

    [RequiredIf("AorB == 'B'")]
    public string Foo { get; set; }

    [RequiredIf("AorB == 'B'")]
    public int? Bar { get; set; }
}

正确:

cmake_minimum_required (VERSION 2.6 FATAL_ERROR)

project      (pcl-visualizer)
find_package (Qt5Wodgets)
find_package (VTK REQUIRED)
find_package (PCL 1.8 REQUIRED)

include_directories (${PCL_INCLUDE_DIRS})
link_directories    (${PCL_LIBRARY_DIRS})
add_definitions     (${PCL_DEFINITIONS})

set  (project_SOURCES main.cpp pclviewer.cpp)
set  (project_HEADERS pclviewer.h)
set  (project_FORMS   pclviewer.ui)
set  (VTK_LIBRARIES   vtkRendering vtkGraphics vtkHybrid QVTK)

QT5_WRAP_CPP (project_HEADERS_MOC   ${project_HEADERS})
QT5_WRAP_UI  (project_FORMS_HEADERS ${project_FORMS})

ADD_DEFINITIONS (${QT_DEFINITIONS})

ADD_EXECUTABLE  (pcl_visualizer ${project_SOURCES}
                                ${project_FORMS_HEADERS}
                                ${project_HEADERS_MOC})

TARGET_LINK_LIBRARIES (pcl_visualizer ${PCL_LIBRARIES} ${VTK_LIBRARIES} ${QT_LIBRARIES})

我不是100%肯定问题的原因,但我的猜测是qt5Widgets模块在qt5中替换了libQVTK等等(我想知道它引用了哪些库),使旧库不可用和不需要

答案 1 :(得分:0)

你可能想看看这个。在VTK" CMakeLists.txt":

IF (VTK_USE_QT AND VTK_USE_GUISUPPORT AND VTK_USE_RENDERING)
  SET (VTK_USE_QVTK ON CACHE INTERNAL "Build QVTK widget and plugin for Qt" FORCE)
ELSE (VTK_USE_QT AND VTK_USE_GUISUPPORT AND VTK_USE_RENDERING)
  SET (VTK_USE_QVTK OFF CACHE INTERNAL "Build QVTK widget and plugin for Qt" FORCE)
ENDIF (VTK_USE_QT AND VTK_USE_GUISUPPORT AND VTK_USE_RENDERING)

因此,在构建VTK时,您应该转向VTK_USE_QTVTK_USE_GUISUPPORTVTK_USE_RENDERING ON。 (默认情况下,最后一个应为ON) 话虽如此,版本5.10.1" CMakeLists.txt"可能需要一些编辑来链接Qt5。