使用 vtk 6.3 和 qt5 构建 libQVTK
Build libQVTK with vtk 6.3 and qt5
是否可以使用 qt5 和 vtk 6.3(或 t运行k 版本)构建 qvtk 库(和相关库)?
我从 .运行 安装程序安装了 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 t运行k 构建这些库吗?我在任何地方都找不到任何迹象。
这个问题折腾了好久,原来是项目CMakeLists.txt的问题。
我会 post 在这里为遇到同样问题的任何人提供错误和正确的版本:
错误:
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})
正确:
cmake_minimum_required (VERSION 2.6 FATAL_ERROR)
project (pcl-visualizer)
find_package (Qt5 REQUIRED COMPONENTS Widgets Core)
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)
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})
qt5_use_modules (pcl_visualizer Widgets)
我不是 100% 确定问题的原因,但我的猜测是 libQVTK 等在 qt5 中被 Qt5Widgets 模块替换(我想知道它指的是什么库),使得旧库不可用不需要。
你可能想看看这个。在 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_QT
、VTK_USE_GUISUPPORT
、VTK_USE_RENDERING
ON
。 (最后一个应该默认打开)
也就是说,版本 5.10.1 的 "CMakeLists.txt" 可能需要针对 Qt5 进行一些编辑 link。
是否可以使用 qt5 和 vtk 6.3(或 t运行k 版本)构建 qvtk 库(和相关库)?
我从 .运行 安装程序安装了 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 t运行k 构建这些库吗?我在任何地方都找不到任何迹象。
这个问题折腾了好久,原来是项目CMakeLists.txt的问题。
我会 post 在这里为遇到同样问题的任何人提供错误和正确的版本:
错误:
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})
正确:
cmake_minimum_required (VERSION 2.6 FATAL_ERROR)
project (pcl-visualizer)
find_package (Qt5 REQUIRED COMPONENTS Widgets Core)
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)
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})
qt5_use_modules (pcl_visualizer Widgets)
我不是 100% 确定问题的原因,但我的猜测是 libQVTK 等在 qt5 中被 Qt5Widgets 模块替换(我想知道它指的是什么库),使得旧库不可用不需要。
你可能想看看这个。在 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_QT
、VTK_USE_GUISUPPORT
、VTK_USE_RENDERING
ON
。 (最后一个应该默认打开)
也就是说,版本 5.10.1 的 "CMakeLists.txt" 可能需要针对 Qt5 进行一些编辑 link。